阿里云ECS网站数据库连接错误与502 Bad解决方法

浅谈今日网站问题:

今天出现这两种错误的次数异常频繁,主要原因是阿里云服务器无法承受我多进程的操作,比如多区域测试网站速度,清除缓存,使用多个插件等,最终导致内存不足,专业来说就是:用来解释执行php程序的php-fpm进程占用过多内存,导致 mysql服务无法启动。

mysql服务关闭,自然网站会出现数据库连接错误的问题。而502 Bad gateway主要是因为PHP-CGI进程终止,和php-fpm.conf的设置有关。一般是php-fpm进程关闭,或者phpcgi进程不够用,需要增加php-fpm.conf 中的max_children值。解决方法如下:

一、最简单的方法:

重启阿里云ECS,就可以恢复正常。平时不要多进程操作,给服务器增加压力。

二、ECS Linux开启swap,也就是设置虚拟内存

1、创建用于交换分区的文件

dd if=/dev/zero of=/mnt/swap bs=1M count=1024

解释:bs=1M代表增加的模块大小,count=1024代表1024个模块,也就是2G空间

RAM是4G以下时,swap设置为RAM的2倍;RAM4G以上,swap等于RAM即可

2、设置交换分区文件

mkswap /mnt/swap

3、启用交换分区文件

swapon /mnt/swap

4、设置开机时自启用swap分区

vim /etc/fstab      #修改文件/etc/fstab中的swap行

/mnt/swap swap swap defaults 0 0    #然后添加该行语句

6、执行free -m命令查看效果

root3 root4

如果想增加虚拟内存swap:

  • 使用命令:dd if=/dev/zero of=/tmp/swap bs=1MB count=1024增加1G的swap空间。
  • 使用mkswap /tmp/swap命令制作一个swap文件。
  • 使用swapon /tmp/swap命令启动swap分区。
  • vim /etc/fstab 添加/tmp/swap swap swap defaults 0 0

三、针对数据库连接错误:

1、 启动mysql

/etc/init.d/mysqld start

如果无法启动时,需要关闭fpm

2、关闭php-fpm

/etc/init.d/php-fpm stop

3、重新启动mysql

/etc/init.d/mysqld start

注意:一般是这种原因,另外wordPress连接数据库的设置与mysql密码不一致,也会导致此现象出现。只需要重新设置密码,匹配密码即可!

root1

四、针对502 Bad gateway问题:

1、开启php-fpm

/etc/init.d/php-fpm start

2、查看php fastcgi的进程数(max_children值)

netstat -anop | grep php-cgi | wc -l

netstat -anpo | grep php-fpm | wc -l

ps aux | grep php-fpm

3、假如使用的进程数等于或高于5个,说明需要增加。然后调整/alidata/server/php/etc/php-fpm.conf 的相关设置

比如你的ECS运行内存是1G,1M带宽

vim /alidata/server/php-5.5.7/etc/php-fpm.conf

查看以下参数:

pm = static(静态)或者 dynamic(动态)

pm.max_children:静态方式下开启的php-fpm进程数量

pm.start_servers:动态方式下的起始php-fpm进程数量

pm.min_spare_servers:动态方式下的最小php-fpm进程数

pm.max_spare_servers:动态方式下的最大php-fpm进程数量

如果 pm = static,那么pm.max_children参数生效。则修改

pm.max_children = 20   #子进程数增加到20

request_terminate_timeout = 600  #执行时间修改为10分钟

如果 pm = dynamic,那么pm.max_children参数失效,后面3个参数生效。则修改

pm.start_servers = 5

pm.min_spare_servers = 2

pm.max_spare_servers = 8

root2

root5

当然这不是解决问题的所有方法,不过确实最常用最实用的方法,至此结束!

Visant

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: