2017-05-18 3 views
0

Ich habe eine JSP-Webanwendung auf IIS 7.5 & Tomcat 8.0.30 über BonCode AJP13 v1.0.26 auf Win 2008 R2 64 Bit gehostet.BonCode Connector, IIS 7.5 & Tomcat 8, langsame und intermittierende Anfrage Timeout-Fehler

Dies funktioniert seit ein paar Monaten in Ordnung.

Wir haben identische Umgebungen: Entwicklung, Staging & Produktion.

auf der Entwicklung und Staging-Umgebungen, plötzlich, wir bekommen sehr langsame Antworten und in einigen Fällen intermittierende IIS erzeugen Timeout-Fehler:

Request timed out 
Exception Details: System.Web.HttpException: Request timed out. 
[HttpException (0x80004005): Request timed out.] 

Auf der Produktionsumgebung, Leistung scheint OK.

Versuchte Wieder Booten Server, IIS neu zu starten, neu zu starten Tomcat etc

Hat jemand hatte diese Verlangsamungen?

Verwendet jemand eine bekannte Arbeitsversion von BonCode größer als 1.0.26?

Einzelheiten

Umgehen IIS & BonCode, dh explicity Auswahl Port 8080, eine sofortige Antwort gibt.

http://<domain>:8080/<path> 

Die Verlangsamung ist nicht JSP-spezifisch. Sogar sehr einfache Seiten, zB Datum & Zeit, gibt immer noch zeitweise langsame Antworten.

Es gibt keine Authentifizierung in der Tomcat/JSP Web-App.

Eine einzelne Instanz von Tomcat auf demselben Server befindet als 7,5 usw. dh keine Ausgleichslast-IIS

Nur Normal HTTP ist dh HTTPS nicht und keine zugehörigen Zertifikate verwendet werden.

Server Diagnose

  • BonCode logs

Gelegentlich gesehen wird:

2016-02-29 15:59:01 1.0.26 ERROR 
TCP Client level -- Server/Port:localhost/8009 
Value cannot be null. 
Parameter name: buffer 
2016-02-29 15:59:01 One Connection raised an error 

aber in der Regel keine verwandten Fehler/Warnungen angezeigt werden

Vergleichen mit älteren Protokolle

Old log

2017-05-04 10:19:28 New Connection 46 of 0 to tomcat: 127.0.0.1:8009 ID: 46 [T-5] 
2017-05-04 10:19:35 New Connection 47 of 0 to tomcat: 127.0.0.1:8009 ID: 47 [T-45] 
2017-05-04 10:25:11 New Connection 48 of 0 to tomcat: 127.0.0.1:8009 ID: 48 [T-45] 
2017-05-04 10:25:15 New Connection 49 of 0 to tomcat: 127.0.0.1:8009 ID: 49 [T-49] 
2017-05-04 10:39:12 New Connection 50 of 0 to tomcat: 127.0.0.1:8009 ID: 50 [T-49] 
2017-05-04 10:40:09 New Connection 51 of 0 to tomcat: 127.0.0.1:8009 ID: 51 [T-22] 
2017-05-04 10:41:29 New Connection 52 of 0 to tomcat: 127.0.0.1:8009 ID: 52 [T-49] 
2017-05-04 10:42:03 New Connection 53 of 0 to tomcat: 127.0.0.1:8009 ID: 53 [T-52] 
2017-05-04 11:05:04 New Connection 1 of 0 to tomcat: 127.0.0.1:8009 ID: 1 [T-20] 
2017-05-04 11:06:37 New Connection 2 of 0 to tomcat: 127.0.0.1:8009 ID: 2 [T-23] 
2017-05-04 11:07:23 New Connection 3 of 0 to tomcat: 127.0.0.1:8009 ID: 3 [T-51] 
2017-05-04 11:08:55 New Connection 4 of 0 to tomcat: 127.0.0.1:8009 ID: 4 [T-23] 
2017-05-04 11:09:17 New Connection 5 of 0 to tomcat: 127.0.0.1:8009 ID: 5 [T-51] 

New log

2017-05-16 14:31:57 New Connection 200 of 0 to tomcat: 127.0.0.1:8009 ID: 200 [T-153] 
2017-05-16 14:31:58 New Connection 201 of 0 to tomcat: 127.0.0.1:8009 ID: 201 [T-153] 
2017-05-16 14:32:30 New Connection 202 of 0 to tomcat: 127.0.0.1:8009 ID: 202 [T-153] 
2017-05-16 14:36:05 New Connection 204 of 0 to tomcat: 127.0.0.1:8009 ID: 204 [T-153] 
2017-05-16 14:36:06 New Connection 205 of 0 to tomcat: 127.0.0.1:8009 ID: 205 [T-153] 
2017-05-16 14:41:38 New Connection 206 of 0 to tomcat: 127.0.0.1:8009 ID: 206 [T-153] 
2017-05-16 14:42:51 New Connection 207 of 0 to tomcat: 127.0.0.1:8009 ID: 207 [T-153] 
2017-05-16 14:42:52 New Connection 208 of 0 to tomcat: 127.0.0.1:8009 ID: 208 [T-153] 
2017-05-16 14:43:12 New Connection 209 of 0 to tomcat: 127.0.0.1:8009 ID: 209 [T-153] 
2017-05-16 14:43:40 New Connection 210 of 0 to tomcat: 127.0.0.1:8009 ID: 210 [T-153] 

Im alten log, die Verbindungs-IDs scheinen nach ~ 20-80 mit jeder Verbindung zurückgesetzt werden eine Reihe von Threads, gelegentlich der gleiche Thread.

Im neuen Protokoll, mit der Verlangsamung, sind die Verbindungs-IDs viel höher und scheinen den gleichen Thread zu verwenden.

  • Tomcat logs

keine Fehler, wie erwartet Servlet/JSP Anfragen weitergeleitet werden, nicht zu werden.

Konfigurationsdateien

BonCode - BonCodeAJP13.settings

<Settings> 
    <Port>8009</Port> 
    <Server>localhost</Server> 
    <MaxConnections>0</MaxConnections> 
    <LogLevel>2</LogLevel> 
    <LogDir>E:\inetpub\logs\BonCode</LogDir> 
    <FlushThreshold>0</FlushThreshold> 
    <EnableRemoteAdmin>False</EnableRemoteAdmin> 
    <HeaderBlacklist>AUTHORIZATION,URL,SERVER_SOFTWARE,SERVER_NAME,SERVER_PROTOCOL</HeaderBlacklist> 
    <PacketSize>65536</PacketSize> 
</Settings> 

Tomcat - server.xml

... 
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" 
      packetSize="65536" /> 
... 

Hinweise

I Ich bin mir bewusst, dass BonCode v1.0.26 jetzt auf v1.0.36 aktualisiert wurde, aber die neuere Version ist erst seit etwa 10 Tagen verfügbar.

Wenn ich nirgendwohin komme, werde ich upgraden, aber es gibt Grenzen, was ich in der Produktionsumgebung tun kann.

Antwort

1

Langzeit: Plan für das Upgrade. Sie sind zurück 10 Versionen.

Höchstwahrscheinlich werden Sie die Anzahl der AJP-Verbindungen sind anstrengend. Ich würde die Tomcat-Verbindung und Timeout-Parameter einstellen stecken Verbindungen zu entfernen:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" keepAliveTimeout="-1" connectionTimeout="60000" maxThreads="1000" packetSize="65536" /> 

Best, Brian

+0

Dank Brian geschieht, für Tomcat, wenn maxThreads nicht angegeben ist, wird standardmäßig auf 200. Eine Einstellung von 1000 für diese zu hoch scheint - das ist ein wenig Traffic-Website .Auch diese Tomcat-Änderung benötigt eine entsprechende BonCode-Änderung als BonCode MaxConnections = Tomcat maxThreads. Wie Sie sagen, wird eine Grenze erreicht - ich werde dies als Antwort akzeptieren. –

0

Für Tomcat, wenn maxThreads nicht angegeben ist, wird standardmäßig 200. Tomcat 8 docs

Wenn für BonCode MaxConnections = 0 ist, wird Verbindungspooling nicht verwendet, aber BonCode erstellt für jede Anforderung eine neue Verbindung.

Vom BonCode Quellcode:

... 
p_Logger.LogMessage(String.Format("New Connection {0} of {1} to tomcat: {2} ID: {3} [T-{4}]", p_ConcurrentConnections, BonCodeAJP13Settings.MAX_BONCODEAJP13_CONCURRENT_CONNECTIONS, p_TCPClient.Client.RemoteEndPoint.ToString(), p_ThisConnectionID, AppDomain.GetCurrentThreadId()), BonCodeAJP13LogLevels.BONCODEAJP13_LOG_BASIC); 
... 

Daraus würde ich die BonCode Verbindung id erwarten & Peak bei 200

auch zu erreichen, ist AppDomain.GetCurrentThreadId()) als veraltet und sollte Verlasse dich nicht auf die Thread-ID.

bei mehr BonCode Protokolle der Suche:

2017-05-16 15:44:27 New Connection 190 of 0 to tomcat: 127.0.0.1:8009 ID: 190 [T-153] 
2017-05-16 15:44:28 New Connection 192 of 0 to tomcat: 127.0.0.1:8009 ID: 192 [T-153] 
2017-05-16 15:44:29 New Connection 194 of 0 to tomcat: 127.0.0.1:8009 ID: 194 [T-153] 
2017-05-16 15:44:43 New Connection 196 of 0 to tomcat: 127.0.0.1:8009 ID: 196 [T-153] 
2017-05-16 15:44:44 New Connection 198 of 0 to tomcat: 127.0.0.1:8009 ID: 198 [T-153] 
2017-05-16 15:45:08 New Connection 200 of 0 to tomcat: 127.0.0.1:8009 ID: 200 [T-153] 
2017-05-16 15:45:30 New Connection 201 of 0 to tomcat: 127.0.0.1:8009 ID: 201 [T-153] 
2017-05-16 15:46:58 New Connection 203 of 0 to tomcat: 127.0.0.1:8009 ID: 203 [T-153] 
2017-05-16 15:48:47 New Connection 204 of 0 to tomcat: 127.0.0.1:8009 ID: 204 [T-153] 
2017-05-16 15:49:16 New Connection 205 of 0 to tomcat: 127.0.0.1:8009 ID: 205 [T-153] 
2017-05-16 15:53:54 One Connection raised an error 
2017-05-16 15:59:56 New Connection 206 of 0 to tomcat: 127.0.0.1:8009 ID: 206 [T-152] 
2017-05-16 15:59:57 New Connection 207 of 0 to tomcat: 127.0.0.1:8009 ID: 207 [T-152] 
2017-05-16 16:05:37 One Connection raised an error 

nicht sicher, warum wurde der Fehler nicht bei Verbindung 201 angehoben, aber es sieht aus wie BonCode Verbindungen erschöpft werden, nicht geschlossen werden und/oder Tomcat max Fadenzahl wird erreicht.

zu v1.0.36 Upgrade wird und sehen, was