阿里云+宝塔面板内存爆满【已解决】

对于使用宝塔面板的用户来说,当使用MySQL数据库进行数据操作时可能会出现内存占用过高的问题,导致服务器负载增加,访问速度变慢,甚至出现宕机的情况。这是一个十分常见的问题,需要及时解决。

当宝塔内存占满100%的时候,我们首先需要找到问题的原因,是什么情况导致,程序性能、服务器负载能力、并发访问、木马病毒、被植入了挖矿程序等等,首先我们通过文件>终端>登录后输入 top,查询占用率,一般我们比较关注php-fpmmysqld,这两个应用。

参考:Linux系统如何增加虚拟内存?

问题的出现

以下截图是内存爆满后导致服务器无法正常登录重启后一段时间的监控数据:来源于阿里云云监控

内存使用率爆满

同时我们通过SSH链接服务器,通过命令:free -h查看内存占用情况(如果您的服务器内存爆满,该命令应该使用不了,建议重启后使用!)

备注:free -h是一个Linux终端命令,用于显示系统内存使用情况。这个命令可以告诉用户系统中多少内存被使用了,多少可用的内存,以及交换空间的使用情况。

上面查看完成之后,大致了解内存的占用情况,但是不知道是具体什么应用占用较大的内存,所以我们使用命令:htop,查看具体的应用程序占用,但是还需要快捷键“shift+M”给进程排个序,如下截图。

Linux应用程序占用情况

从上面截图大致了解,是MySQL数据导致内存占用过满!如果内存占用过高的问题已经出现,需要及时采取措施进行解决。

解决内存占用过高

先看下宝塔官方的标准回答,如下问:

关于服务器高负载的问题,如果服务器的负载只是偶尔出现高的情况,您可以不用太在意,可能当时正在执行任务所以导致服务器负载一时增高。另外如果负载不超过百分之八十您也不用太禁止,服务器运行起来都是要消耗服务器性能的。
如果您的服务器出现负载长时间百分之百的情况。您可以根据以下步骤来排查下问题所在:

1、查看服务器运行状态
面板的监控页面有显示服务器各项资源的使用情况,您将鼠标放在线条上即可查看到占用该资源高的五个进程。
如果您未可以开启监控也可以软件商店安装任务管理器或者在命令行执行top或htop命令来查询到当前服务器运行状态

2、检查相关程序日志
找到相关进程后可以在面板左侧的日志页面查看相关日志文件以寻找错误、警告或异常信息。
a  )如果是nginx和php主要占用服务器资源,建议可以排查网站访问日志,来排查下网站是否被攻击了,
您不会分析网站日志的话,软件商店有【网站监控报表插件】,可视化查看日志,如果有大量请求在1秒或几秒内进来,大概率就是被攻击了导致的,你可以安装我们的【Nginx/Apache防火墙】插件拦截攻击,详细设置参考cc防御那一段: https://www.bt.cn/bbs/thread-73847-1-1.html
b  )如果是MySQL或者PHP主要占用服务器资源,可以看下mysql,php是否有大量慢日志,有大量日志的话大概率是网站程序导致的,可以联系代码提供者或者程序员协助您处理一下;
c  )如果系统进程您可以使用 strace 命令具体排查下。
d  )如果是非常见进程导致的负载高,您可以和代码提供者或者程序员确认下是为网站产生的,或者和服务器运营商确认下是否是那边的进程,如果都不是的话,您则需要具体排查下。

3、查看网络使用
面板的监控页面或者是在命令行执行iftop 或 nethogs 命令来监控网络使用情况,来排查下服务器是否被ddos攻击,如果存在带宽高、服务器存在大量的TCP链接、丢包超时的情况,大概率就是ddos攻击,面板中的防护软件属于是软防无法防御ddos攻击,需要进行防御的话您可以咨询下服务器运营商是否有相应的防护功能。

请您耐心花点时间按照以上步骤进行排查,以上步骤应该能帮助你定位服务器高负载的问题所在。如果您按照上面步骤进行排查后确实仍无法确定问题所在,您可以补充更多细节。这边会视情况进行回复。

本人解决方法有如下几个:(既然是显示MySQL导致的问题,就从数据库入手)

  • 步骤一:把服务器上的MySQL暂停,暂停后确实看到内存下降;
  • 步骤二:暂停MySQL明显不可行,导致网站无法访问,所以考虑将数据库迁移;考虑的平台是西部数码;(因为他们提供单独的mysql,重点也是便宜,起步:80元/年)
  • 步骤三:同时也发现网站数量增加,内存会明显增加,所以优化网站也是必须。
  • 步骤四:优化配置。

优化配置

第一点:使用宝塔面板可视化MySQL配置:

软件商店–找到MySQL — 设置–找到性能调整。可以根据你主机的配置,选择宝塔提供的优化方案。(如果服务器只有4GB内存,宝塔官方建议选择2-4GB优化方案)

第二点:CDN的配置优化

第三点:网站流量限制(具体参数应该可以更小)

流量控制

第四点:Wordpress的优化

MySQL内存占用过高是一个常见的数据库问题,需要及时解决。对于已经出现的问题,需要找出原因,并采取相应的措施进行解决。同时,还需要采取预防措施来避免这种问题的出现。

所有设置完成后,内存会降下来很多,再继续观察…

第五点:PHP设置,适当限制php并发(具体参数应该可以更小)

软件商店–找到 PHP-7.4–设置,找到性能调整,我的服务器是2核4G内存,可以参考下我的设置。强烈建议把后一项的值 max_spare_servers 改成 15,修改过对内存占用影响也是蛮大的。

适当限制php并发

第六点:增加虚拟内存

参考:Linux系统如何增加虚拟内存?

参靠网站:https://www.iyunying.org/zha/307738.html

滚动至顶部
扫描微信二维码联系我们 关闭