我正在使用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可能会更好。 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以及他们在做什么的更强大/有用的工具。 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