2017-04-05 33 views
1

Ich habe einen Server mit Apache-Server mit PHP.Apache TIME_WAIT Verbindungen, PHP auf Solaris 11.2

  • S.O. Solaris 11.2
  • Apache 2.2
  • PHP 5.3.28

  • RAM 20G

  • 16 Kernen

in Apache I 40 Domänen konfiguriert haben, mit den folgenden Merkmalen:

<VirtualHost *:80> 
    ServerName domain.com 
    LogFormat  "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" **%T/%D**" combined_t 
    ErrorLog  "|/usr/apache2/2.2/bin/rotatelogs /opt/avv2002_data/logs/domain_err.%Y%m%d 86400" 
    CustomLog  "|/usr/apache2/2.2/bin/rotatelogs /opt/avv2002_data/logs/domain_log.%Y%m%d 86400" combined_t 
    LogLevel info 
    DocumentRoot "/opt/www/apache/joomla/sites/" 
    DirectoryIndex index.htm index.html index.php 
    <Directory "/opt/www/apache/joomla/sites/"> 
     Options -Indexes FollowSymlinks Includes MultiViews 
AllowOverride All 
     RewriteEngine on 
     RewriteCond %{REQUEST_FILENAME} -s [OR] 
     RewriteCond %{REQUEST_FILENAME} -l [OR] 
     RewriteCond %{REQUEST_FILENAME} -d 
     RewriteRule ^.*$ - [NC,L] 
     RewriteRule ^.*$ index.html [NC,L] 
    </Directory> 
</VirtualHost> 

Vor ein paar Tagen Entwicklung hochladen ed eine neue Anwendung in PHP und mein Server begann mit Problemen mit RAM und CPU, sah ein wenig Ich fand die folgenden:

zu viele Prozesse, Kinder und TIME_WAIT.

Beispiel:

Verwenden Sie Swap.

Extrakt Swap mit pmap

swap: 212.276 Bytes pid: 23158

# ps auxww | grep 23158 

webservd 23158 0.1 0.121227628216 ?  S 11:49:57 0:06 /usr/apache2/2.2/bin/httpd -k start 

sehen zu vielen TIME_WAIT

netstat -aun | grep 23158 

serverip.80  serverip.61768 root  23158 httpd   44876  0 65160  0 TIME_WAIT 
serverip.80  serverip.31254 root  23158 httpd   7843  0 65160  0 TIME_WAIT 
serverip.80  serverip.55937 root  23158 httpd   7262  0 65160  0 TIME_WAIT 
serverip.80  serverip.52572 root  23158 httpd   4845  0 65160  0 TIME_WAIT 
serverip.80  serverip.49687 root  23158 httpd   7075  0 65160  0 TIME_WAIT 
serverip.80  serverip.29891 root  23158 httpd   29310  0 65160  0 TIME_WAIT 
serverip.80  serverip.57332 root  23158 httpd   9557  0 65160  0 TIME_WAIT 
serverip.80  serverip.20296 root  23158 httpd   7262  0 65160  0 TIME_WAIT 
serverip.80  serverip.16077 root  23158 httpd   61246  0 65160  0 TIME_WAIT 

....... 


netstat -aun | grep "ipserver.80" | wc -l 
2077 

ps auxww | grep "/usr/apache2/2.2/bin/httpd -k start" | wc -l 
507 

meiner Apache-Server-Status Show voller wwwwwwwwwwwww

pache Server Status for serverip 

Server Version: Apache/2.2.27 (Unix) mod_ssl/2.2.27 OpenSSL/1.0.1h DAV/2 PHP/5.3.28 mod_fcgid/2.3.9 
Server Built: Jun 17 2014 11:19:37 
Current Time: Wednesday, 05-Apr-2017 13:50:10 CDT 
Restart Time: Wednesday, 05-Apr-2017 13:12:10 CDT 
Parent Server Generation: 0 
Server uptime: 38 minutes 
Total accesses: 125046 - Total Traffic: 3.6 GB 
CPU Usage: u404.25 s342.99 cu0 cs0 - 32.8% CPU load 
54.8 requests/sec - 1.6 MB/second - 30.4 kB/request 
29 requests currently being processed, 0 idle workers 

WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 
WWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 
WWWWWWwWWWWWW 

Gibt es eine Möglichkeit zu sehen, welche Domain mit viel Traffic zu tun hat? Auf diese Weise wissen Sie genau, konnte, was war, was das Team von Entwicklung

modifizierten

Ich dachte an einen Profiler von PHP, um zu sehen, welche Domain dauert länger

Jede Idee, was sonst sollte ich überprüfen?

+0

Cross-gepostet: http://unix.stackexchange.com/questions/356224/apache-time-wait-connections-w-sending-reply-and-php-on-solaris-11-2 –

Antwort

0

Sie haben die maximale Anzahl an Arbeitern erreicht, Sie müssen sie erhöhen. Wir haben eine Anleitung auf how to increase the max number of Apache workers on WHM gepostet, in Ihrem Fall müssen Sie dies manuell in der Konfigurationsdatei von Apache tun (ändern Sie Ihre MaxClients auf 1024).

Jetzt ist die Frage, warum haben Sie die maximale Anzahl von Arbeitern erreicht, ist es wegen echtem Verkehr, oder liegt es an etwas anderem?

Mein Rat ist, die Apache-Protokolle zu überprüfen (ich weiß nicht, was die Struktur auf Solaris ist, das letzte Mal war ich 2004 zurück) und sehen, welche Website den meisten Verkehr hat (es ist die Verkehr mit dem größten Protokoll). Sie sollten dann diesen Datenverkehr analysieren: Ist es echter Datenverkehr? Ist es Bot-Verkehr? Wenn es Bot-Verkehr ist, dann ist es legitimer Bot-Verkehr (wenn nicht, dann sollten Sie all diese illegitimen Bots blockieren)?

Wenn es sich um echten Verkehr handelt, haben Sie dann viele 404s? Wenn ja, dann müssen Sie diese 404s ansprechen - weil jeder 404 einen anderen Worker in einer Joomla-Instanz benötigt.

+1

Ich modifizierte die Einstellungen, und sogar so fällt es einmal am Tag (vorher war es alle 5 Minuten). Es wird keine Datenbank verwendet, ich denke, es sollte ein PHP-Skript sein, aber ich habe keine Möglichkeit zu sehen, welche Domäne es ist, da ich viele Domänen konfiguriert habe. Dies ist meine Apache-Konfiguration: Startserver 10 MinSpareServers 25 MaxSpareServers 500 Serverlimit 1400 MaxClients 1400 MaxRequestsPerChild 1000 – ymk369

+0

Haben Sie die Apache-Logs zu sehen, welche die größte Protokollgröße hat? – itoctopus