解决宝塔面板CPU占满100%,负载100%网站缓慢等问题(完全篇)

释放双眼,带上耳机,听听看~!

宝塔服务器面板cpu、负载都是100%,一般来说这种问题的可能性很多,有可能是程序性能、服务器负载能力、PHP或Mysql并发访问、PHP-FPM进程占用、磁盘空间不足、木马病毒、被植入了挖矿程序等等,我们初步以几个方面来为大家做一下分析。其实这类问题可以这样考虑,比如说CPU占用的多,我们可以提高内存的使用率、提高磁盘的IO性能等等。我们今天主要从服务器运行环境出发,来为朋友们分析。

本篇内容以五个部分为大家分析:

1、mysql篇

2、php进程篇

3、内存篇

4、磁盘空间篇

5、开发篇

1、mysql篇

初步来说首先考虑使用 top 查看一下当前的负载情况,使用XSHELL工具连接到命令行操作界面,或通过宝塔面板->文件  点击终端进入命令行操作也可。

新版本的端口需要二次验证服务器权限,我们在步1处输入服务器的SSH链接密码,然后在步2处勾选记住密码(记住密码并不安全,这么做是为了方便),直接点击步3的  即可登录到宝塔终端页面。

在下图(6-2-1-2)我们直接输入命令 top,查看资源占用列表:

我们看到PID2185这个mysql的进程CPU占用比较高,已经达到83%,考虑到内存数值占用不多,面板的主要负载应该发生在mysql的读写,占用了大量的CPU资源,用户的访问先不考虑,首先考虑mysql的性能问题,根据朋友发过来的截图来判断了一下。

发现内存的占用较少 ,看到这种情况,第一直觉可以优化一下mysql的性能,接着找到面板的软件管理,打开mysql的设置,在上面几个章节已经为大家讲过关于Mysql的性能调整的内容,可以参考: 宝塔面板之Mysql性能调整 来进行设置。

根据内存大小调整优化方案为2-4GB,首先将数据库全部备份了一下,老司机都懂的,数据安全最重要,不管如何操作都会存在风险,所以一定要备份一下!!!!然后,保存,再重启数据库。若方便的话建议重新启动一下服务器就更直观了。

设置完成后,我们再看一下负载情况:

负载确实降下来了,朋友们若是遇到此类问题,若是mysql占用的情况较为明显,可以考虑采用此种方案尝试 !!!!

2、php进程篇

我们知道,问题出现了重在如何分析?考虑到目前PHP的广泛应用,大多站点在选用服务器配置时,没有提前对自己的项目源码做过压测,也不知道程序源码的性能如何,同样的一条业务指令,有的开发者写的就考虑的比较多,有的相对就少很多,还有对数据库的读写、磁盘的IO等等一些不确定的因素,布署好程序后,发现很多100%负载的情况。

其实,宝塔已经为我们做了很多工作,我们完全可以做出一些配置来,避免一些高负载的情况出现,比如,我们可以使用更高版本的PHP,也可以通过 宝塔面板之PHP参数及并发调整 来调整并发性能,来降低PHP进程堵塞。

运行模式:动态 | 静态

php-fpm至关重要的参数:

max_children;静态方式下开启的php-fpm进程数量
start_servers; 动态方式下的起始php-fpm进程数量
min_spare_servers;动态方式下的最小php-fpm进程数量
max_spare_servers;动态方式下的最大php-fpm进程数量

那到底是选用动态的好还是静态的好?

大内存的服务器(比如8G以上)来说,用静态的max_children实际上更为妥当,因为这样不需要进行额外的进程数目控制(这块提到点了,进程越多占的资源越大),会提高效率。因为频繁开关php-fpm进程也会有造成更多的资源占用,所以内存够大的情况下开静态效果会更好。数量也可以根据 总内存/30M 得到,比如8GB内存可以设置为100,那么php-fpm耗费的内存就能控制在 2G-3G的样子。

所以我们在实际的配置中,需要自己调配,这样可以大大的降低高负载的情况,此情况只适用于在使用top命令后,由php-fpm占用资源过大,来参考调整。

3、内存篇

PHP、Mysql性能、并发我们都调整过了,但负载还是居高不下,怎么办?
有办法啊,我们可以在不增加额外花费的同时,对内存进行扩容!
说到这里,我们不得不说,一个神奇的宝塔插件,那就是Linux工具箱,我们可以调整2个方面,来对内存扩展进行调整:

一是 添加swap交换分区
二是 添加内存盘

实际上,以上两种全是建立在磁盘空间的基础上来做的调整。(Windows下称为虚拟内存)
添加swap我们可以参考前面讲过的:宝塔面板之添加Swap交换分区 这里就不多说了。

添加内存盘如何操作呢?

我们可以通过点击宝塔面板的软件商店,搜索:Linux工具箱,找到这个插件,点击操作区域的设置,进入Linux工具箱窗口,在步1点击 选择存放磁盘的位置,步2输入可以挂载的内存盘大小(这个根据你目前的磁盘容量来考量),在步3处点添加,来完成内存盘的建立。

通过建立swap交换分区及内存盘,我们可以在增强服务器的稳定性前掉下,扩容内存的大小,以便解决一些相对配置较低,容易形成高负载而影响使用的服务器。

4、磁盘空间篇

可用磁盘空间太小或几乎占满的情况下,朋友们遇到过吧! 那么问题来了,磁盘空间也对高负载产生影响吗?
答案是绝对的,不信你试试;

体现在以上几个方面:

为了加快程式运行,大部分PHP程序会写缓存;
Mysql在不使用诸如:Memcache、Redis、eAccelerator、opcache进行内存优化时,会以文件的形式存储在磁盘中;
各种日志,如web访问日志、面板日志、监控日志及各种错误日志占用磁盘空间;

更有甚者,日志文件都能达到几十G、上百G,好吧,你的磁盘不花钱是不是?

不用多解释,在使用windows时,你会发现好多软件都会产生一些临时性的缓存、日志等文件,时间长了系统变慢,运行什么软件也不流畅,同样的,服务器系统一样会存在这样的问题,运行不流畅,就会产生资源被侵占。

所以我们在日常维护中,要多运用宝塔或三方已经提供的工具,或使用计划任务定期清理磁盘无用的文件,只有这样才会少些问题。

5、开发篇

对于有一定开发能力的朋友,可以对源码进行二开改造,降低php的进程数、Mysql存取数据库的性能,有好多问题还是产生于此,减少握手次数、对查库操作减少资源浪费。

本文旨在讲解宝塔面板的使用,过多关于程序开发方面的就不多讲了,大家可以在网上多搜索一下,多了解一下。

给TA买糖
共{{data.count}}人
人已赞赏
网站建设

BT宝塔面板磁盘爆满以至无法登录面板后台的处理方法

2020-4-27 13:27:01

网站建设

宝塔面板Linux自动挂载数据盘到www目录工具 1.0 Beta

2020-4-27 13:29:45

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索