post

WordPress 响应慢,建立数据库连接时出错

之前博客响应特别慢,还经常出现“建立数据库连接时出错”这个错误,英文为“Error establishing a database connection”。

通过 top 命令发现 kswapd0 进程 CPU 占用过高,而 kswapd0 进程是系统的虚拟内存管理程序,如果物理内存不够用,系统就会唤醒 kswapd0 进程,由 kswapd0 分配磁盘 Swap 交换空间作缓存,因而占用大量的 CPU 资源。

如果 Swap 空间用光了,那么系统就会发生错误,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。

也正是因为内存不足,造成了数据库MySql进程被杀,导致 WordPress 出现“建立数据库连接时出错”。

内存使用到多少开始使用 Swap?

vm.swappiness 这个内核参数控制的,执行 vi /proc/sys/vm/swappiness 命令可以查看和修改参数的数值。

这个交换参数控制内核从物理内存移出进程,移到交换空间。该参数从0到100,当该参数=0,表示只要有可能就尽力避免交换进程移出物理内存,并不代表禁用Swap 分区,只是告诉内核,能少用到 Swap 分区就尽量少用到; 该参数=100,这告诉内核疯狂的将数据移出物理内存移到 Swap 缓存中;默认的值是60。

我的解决办法

既然知道了原因,就好解决了。 我的 VPS 内存是 4G,理论上已经足够用了,所以我决定彻底关闭 Swap 分区。

只需要注释掉 Swap 分区项即可,执行如下命令:

sed -ri 's/.swap./#&/' /etc/fstab

最后再用 free -m 查看下 Swap 为 0,即代表关闭了。

free命令输出结果

关闭之后,到目前为止,博客已稳定运行一个月。

Speak Your Mind

*

· 22 次浏览