使用 WordPress 构筑的 Blog 最近总是会报告 “建立数据库连接时出错” ,查看 Apache 的日志得到如下信息
| 
					 1  | 
						$ sudo vim /var/log/apache2/error.log  | 
					
在日志的最后得到类似如下的内容
| 
					 1  | 
						[Mon Jan 06 16:30:06 2014] [error] [client 5.10.83.83] WordPress SELECT * FROM wp_posts  WHERE (post_type = 'page' AND post_status = 'publish')     ORDER BY menu_order,wp_posts.post_title .......MySQL server has gone away  | 
					
这个 “MySQL server has gone away” 有些莫名奇妙,MySql 怎么会无缘无故的没有了呢。
于是查看系统日志
| 
					 1  | 
						$ sudo vim /var/log/syslog  | 
					
看到如下的输出
| 
					 1 2 3 4  | 
						Jan  6 16:30:05 AY130422143404983ad9 kernel: [236491.346180] Out of memory: Kill process 755 (mysqld) score 91 or sacrifice child Jan  6 16:30:05 AY130422143404983ad9 kernel: [236491.346267] Killed process 755 (mysqld) total-vm:887016kB, anon-rss:45820kB, file-rss:0kB Jan  6 16:30:05 AY130422143404983ad9 kernel: [236491.422036] init: mysql main process (755) killed by KILL signal Jan  6 16:30:05 AY130422143404983ad9 kernel: [236491.422096] init: mysql main process ended, respawning  | 
					
可以明显看到,是由于系统内存不足,导致了 Linux 系统自带的 OOM Killer 动作。执行
| 
					 1  | 
						$ free -lm  | 
					
可以看到,实际的内存已经严重不足了,这台机器只配置了512M内存,跑一阵子之后,系统的剩余内存不足 10MB的样子了。
没办法,花钱加内存到1G。悲剧的是,还是会死掉,具体解决办法可以查看
Ubuntu 12.04下安装配置Worker工作模式的Apache 支持PHP
Ubuntu 12.04 Apache2 安装 PHP-FPM 增强 PHP5-CGI 的功能
通过限制DefaultMaxClassProcessCount 的数量来限制php5-cgi 的数量来避免太多的并发进程耗尽资源。