我在Debian上配置了一个简单的LAMP堆栈,我遇到了Apache Web服务器的一些问题。
每隔3-4小时,Web服务器就会进入死锁,并且所有请求都会阻塞数据库。服务器正在为每个请求创建一个新子节点。进程数量增长很快。几秒钟后,Monit注意到了一些错误并重新启动了Apache服务器。
我怀疑这个问题是由PHP处理数据库连接池的方式生成的,因为服务器仍然能够回答静态内容请求。你有过这种行为吗?我该怎么做?
更新:问题已解决。使用APC进行操作码缓存和用户数据似乎是一个坏主意。我现在使用Memcache存储用户数据,仅使用APC代码。我仍然不时会遇到一些分段错误,但服务器大部分时间都是稳定的。
答案 0 :(得分:3)
我怀疑问题是:
这两件事情合谋导致你所看到的问题。它们都需要修复,因为它们可能会导致问题。
这完全基于猜测和经验。
答案 1 :(得分:1)
你为什么不看看日志? /var/log/apache2/*
是一个很好的起点。在服务器死之前请求什么?从那以后,你可以推断出出了什么问题。由于php脚本默认在30秒后终止,因此错误需要非常大,才能产生类似的效果。
答案 2 :(得分:1)
检查/etc/apache2/apache2.conf中的超时设置,当Timeout设置为高并且系统被一堆断开的连接命中时,我遇到了类似的问题。
答案 3 :(得分:0)
mysql-slow日志对于查找导致问题的慢查询也很有用。