如何使用netstat&httpd.conf加速服务器?

我正在使用netstat命令来帮助正确地优化我的httpd.conf。

结果如下:

netstat -an | grep -c :80 579 netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 134 207.x.xx.134 //This was the highest result. Also this is my servers IP address 

我知道我自己的IP地址正在返回134个httpd连接。 我已经浏览了整个网站的脚本,并删除了以'http://'开头的任何css,js,php链接 – 但是我仍然可以获得如此高的连接数量!

我也在论坛上发现了这个命令,但不知道它在显示什么:

 ps auxww | grep httpd | wc -l 37 

这里是我的httpd.conf:

 Timeout 30 TraceEnable Off ServerSignature Off ServerTokens ProductOnly FileETag None StartServers 2 <IfModule prefork.c> MinSpareServers 2 MaxSpareServers 4 </IfModule> ServerLimit 250 MaxClients 800 MaxRequestsPerChild 50 KeepAlive On KeepAliveTimeout 1 MaxKeepAliveRequests 10 

我可以改变什么来最大化我的混合服务器? (运行Intel(R)Xeon(R)CPU E5620 @ 2.40GHz – 2GB内存 – MYSQL重)。

谢谢。

有几点意见,但请注意,这是很多的教育猜测工作给予了小信息继续下去。 如果他们不为你工作,随意尝试并忽略他们:

  • MaxRequestsPerChild非常低。 除非你有这个值的具体原因,把它放在一个合理的高值(1000,10000等)或0,完全禁用它。
  • KeepAliveTimeout为1是合理的,虽然略高(2-5),或者根据您的应用程序禁用KeepAlive可能会更好。
  • 对于2GB的服务器,800的MaxClients和250的ServerLimit是远远高的,更不用说正在运行RAM的MySQL。 例如,如果您希望将大约1GB用于Apache,那么这些设置的更合理的值是40-80。 确切的值将取决于每个Apache实例需要多less内存。 有这些值非常高的危险是,在高负载时,机器将开始使用交换内存,这将使服务器的性能下降到接近0。
  • ps auxww | grep httpd | wc -l ps auxww | grep httpd | wc -l ps auxww | grep httpd | wc -l行只计算有多less个Apachesubprocess在运行(在这种情况下是37)。 mod_status扩展是确定运行多less个subprocess以及他们在做什么的更强大/有用的工具。
  • 我猜测你有自己的IP连接,由于MySQL的连接134连接,虽然取决于你在哪里运行,也可能有其他来源。 删除其中的“http”的链接是没有意义的,不应该影响这个数字(除非你有这个内容的一些特定的Apache代理设置)。
  • 当使用netstat你可能希望包含一个grep ESTABLISHEDpipe道来只列出当前build立的连接,否则包含大量的旧的TIME_WAIT连接。 例如,在我的一台服务器上,目前列出了1300个连接,其中只有3个实际上处于活动状态。

netstat -anp |grep 'tcp\|udp' | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

你的命令是错的 – netstat -anp – web服务器根本就不使用udp。 为了更好地testing,我会select一些触及数据库的url,或者可能testing一个完整的stream程,并用ab作为基准

 ab ... # http://httpd.apache.org/docs/2.0/programs/ab.html