Apache TIME_WAIT连接,solaris 11.2上的php

时间:2017-04-05 18:58:06

标签: php apache joomla solaris

我有一台带有php的apache服务器的服务器。

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

  • RAM 20G

  • 16核

在apache中,我配置了40个域,具有以下特征:

<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>

前几天开发用PHP上传了一个新的应用程序,我的服务器启动了ram和cpu的问题,看了一下我发现了以下内容:

进程太多,子进程和TIME_WAIT。

示例:

使用swap。

使用pmap提取交换

交换:212276字节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

看太多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

我的apache服务器状态显示完整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

有什么办法可以查看哪个域名是流量大的域名?通过这种方式,您可以确切地知道开发团队修改了什么

我在想一个php的分析器,看看哪个域需要更长的时间

知道我应该检查什么?

1 个答案:

答案 0 :(得分:0)

您已达到最大工人数,您需要增加它。我们在how to increase the max number of Apache workers on WHM上发布了一个指南,在您的情况下,您需要在Apache的配置文件中手动执行此操作(将MaxClients更改为1024)。

现在问题是,为什么你达到了最大数量的工人,是因为真正的交通,还是因为别的东西?

我的建议是检查Apache日志(我不知道Solaris上的结构是什么,上次我的工作是在2004年),看看哪个网站流量最大(这是流量)用最大的日志)。然后,您应该分析该流量:这是真正的流量吗?它是机器人流量吗?如果它是机器人流量,那么它是合法的机器人流量(如果没有,那么你应该阻止所有那些非法机器人)?

如果是真正的流量,那么你有很多404吗?如果是,那么你需要解决这些问题 - 因为每个404都需要Joomla实例中的另一个工作者。