我每天晚上都在Centos 5networking服务器上遇到麻烦,当时雅虎抓取了网站并在这个过程中closures了网站。 我已经监视了服务器,当它在雅虎洪水下,内存永远不会耗尽,所以它从来没有达到交换分区。 负载似乎不会超过1.5。 我不认为有一个问题,除非apache刚刚停止接受传入的连接一段时间。
我怀疑这个问题与服务器不接受任何新的连接有关,但对我来说这是一个阴暗的领域。
有人能帮我弄清楚这里发生了什么,或者指引我学习一些材料。
编辑:
我在每20秒运行一次的while循环中运行由Glenn Kelley提供的netstat命令。 当我注意到我一次获得超过5个ESTABLISHED连接(我的规范)时,CLOSE_WAIT数字会开始攀升到40-60左右。此时,我在while循环中添加了“mysqladmin proc stat”,并注意到我有一个当时正在运行mysqldump的备份脚本。
显然,mysqldumplocking了数据库中的所有表,防止写入发生。 由于这一点以及巧合定时的雅虎爬网(每分钟40页),服务器在达到MaxClients后最终会停止接受Apache的传入请求。
我现在正在考虑使用MySQL复制来允许非locking备份或find更好的时间来运行我的备份。 使用mysqldump和–skip-lock-tables不是我的select,我不能使用mysqlhotcopy,因为我有一些InnoDB表。
有几件事你可以在这里做。
netstat -ntu | awk'{print $ 5}'| 切-d:-f1 | sorting| uniq -c | 分类
该命令将列出每个ip到服务器,以及它有多less连接。
改变主要选项:(根据您的喜好和需要调整)
MaxKeepAliveRequests 50(100)KeepAliveTimeout 60(30)
其他编辑可能会对以下每个variables有所帮助Timeout KeepAliv MinSpareServers MaxSpareServers MaxClients
改变1一次 – 这样你知道你的变化,如果这个或那个伤害或帮助。
添加更多的Anti-DDOS工具也可能有帮助。 来自InetBase的脚本可能会有帮助 – 取决于您的使用情况。
http://www.inetbase.com/scripts/ddos/
最后 – 一个简单的反向代理可能真的有所作为。 其中之一就是NGINX
你有没有使用控制面板? 如果是的话 – 知道哪一个 – 可以帮助社区帮助你多一点…
以前见过这样的事情
我的猜测是,你有一个错误的链接,永远不会完成..所以进程等待..等待和等待..下一个查询命中相同的链接..并等待,等待和等待..
基本上它一直这样做,直到所有的进程正在使用..你可以接受了:(
检查记分板(在重新启动服务器之前查看哪些URL卡住了)
还要确保启用mysql日志logging,并检查是否没有达到max_connections(假设你的web应用程序正在使用mysql)。
如果您提供了有关如何configurationWeb服务器的详细信息,连接数,yahho连接数,平均和最大持续时间,这将会很有帮助。
听起来像你有一个错误的组合为maxClients和MaxKeepAliveRequests / KeepAliveTimeout