mysql 停止服务内存_服务器莫名的内存高占用 导致 MySQL 停止运行问题

这问题是年后开始出现的,服务器内存占用越来越高,一度达到90%,最后 MySQL 都停止运行了。贴吧签到的数据库用户 ID 这一项也丢失了,导致无法签到,断签了好些天,被提醒才发现,要挨打的。幸好设置了自动备份,把数据恢复,然后提高了签到频率,没想到后边反复出现了几次,不得不重视。

出现了几次就不是偶然了,最后每次都飙到85%,只能重启服务器解决。第一次出现时以为是 MySQL 数据库的自身问题,可能因服务器内存小而崩溃,实际1.8G 的运行内存不大不小的。查了数据库日志发现数据库因分配内存不足而启动失败,用 top 命令也查了下,内存高占用的前 20 有 MySQL,是个大头,于是添加了 2G 的 Swap 虚拟内存,再添加了数据库进程守护,计划任务每5分钟运行一次,检测到 MySQL 不运行了就重新启动。pgrep -x mysqld &> /dev/null

if [ $? -ne 0 ];then

bash /www/server/panel/script/rememory.sh

/etc/init.d/mysqld start

fi

结果过了些天问题依旧出现了,4G 内存也不够耗。这就有点莫名其妙的,之前一直运行好几年稳如狗的,怎么突然就这样呢?回想一下自己的操作,除了升级高版本宝塔面板好像就没了,升个大版本应该不会突然占用飙升吧,查进程看面板占用也才几十 MB ,到论坛也没见有人反馈,说明不是这个原因。

最后用 ps 命令仔细查看了所有进程,终于发现了问题的源头,是贴吧签到的定时任务和 php-fpm 。如果需要不间断地自动签到,那就得不停地访问执行签到的 do.php 页面。进程中发现了几十个正在运行的 do.php 和php-fpm 进程。

原来设置的是一分钟执行一次的 crontab ,后来似乎是嫌签到太慢,我就就按着查到的方法改为 10 秒执行签到一次:php /www/wwwroot/qiandao/do.php

sleep 10;

php /www/wwwroot/qiandao/do.php

sleep 20;

php /www/wwwroot/qiandao/do.php

sleep 30;

php /www/wwwroot/qiandao/do.php

sleep 40;

php /www/wwwroot/qiandao/do.php

sleep 50;

php /www/wwwroot/qiandao/do.php

面板提供的计划任务功能最小只能 N 分钟执行,就查了下,了解到可以用 sleep 来实现。虽然知道在 C++ 程序中长时间延迟不能用 sleep ,都是用不会导致程序假死阻塞的定时器,但在这计划任务中PHP用应该没问题吧?还是 to young to simple 了,去除 sleep ,改回一分钟执行一次,重启服务器,再也没出现内存爆满的问题了,回到了以前正常占用内存60%左右。

最开始只用了 top 查内存高占用的前 20 进程,所以没发现是 do.php 和 php-fpm 的原因。一个进程只占了不到 9 mb ,虽然PHP管理中限制了 php-fpm 最大子进程数是50个,但到50个后,do.php 进程也达到 50 ,两个加起来占用就飙到 900 MB 了,妥妥地爆满。

正常我的网站 PHP 需求 是不会产生几十个进程的,是使用 sleep 导致了这个问题。原因大概是采用 FPM 管理 PHP 进程,由于 sleep 导致阻塞等待,FPM 实际分配了过多子进程,然后我的 PHP 并发方案是设置的 2G ,问题就这么产生了。

总结:编程不专业,程序两行泪。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode - Convert Sorted Array to Binary Search Tree

给出一个已排序的数组,将其转化为二叉查找树(BST)。 思路:取数组中间元素为根结点的value,则数组左侧、右侧分别为BST的左子树、右子树。递归可求解。代码如下: 1 /**2 * Definition for binary tree3 * …

匿名包装器(function(){})()

转载自***:https://bonsaiden.github.io/JavaScript-Garden/zh/#function.scopes只有一个全局作用域导致的常见错误是命名冲突。在 JavaScript中,这可以通过 匿名包装器 轻松解决。(function() {// 函数创建一个命名空间window.foo function() {// 对外…

PS滤镜绘制漂亮线条制作

先看最后效果   1.新建一图层---选择画笔画条垂直线(颜色为白色)。  2.滤镜里面的动感模糊(大小视效果而定吧)  3.两头细的线条出来了  执行后效果如…

ffmpeg.exe 笔记

2019独角兽企业重金招聘Python工程师标准>>> open_input_file: avformat_open_input 打开了输入文件 av_dict_get 获取信息 setup_find_stream_info_opts avformat_find_stream_info codec avcodec_find_decoder open_output_file avformat_alloc_output_context2(…

java comparator排序顺序_Java 集合排序策略接口 Comparator

1. 前言 最近用到了集合排序&#xff08;基于 Java 8&#xff09;。现在我能用 Stream 的就用 Stream &#xff0c;真香&#xff01;排序可以这么写&#xff1a; List<People> peoples new ArrayList<>();// 中间省略// 按照年龄从小到大排序 peoples.sort(Compar…

关闭IOS更新功能(ios4/5/6)

防止IOS升级&#xff1a; 工具&#xff1a;ifunbox 展开/System/Library/LaunchDaemons&#xff0c;将下面4个文件删除&#xff08;不推荐&#xff09;或者改名&#xff08;后缀也得改&#xff09;,改名后记得必须重启。 com.apple.mobile.softwareupdated.plist - OTA升级&…

TCP/IP、Http的区别

2019独角兽企业重金招聘Python工程师标准>>> TPC/IP协议是传输层协议&#xff0c;主要解决数据如何在网络中传输&#xff0c;而HTTP是应用层协议&#xff0c;主要解决如何包装数据。关于TCP/IP和HTTP协议的关系&#xff0c;网络有一段比较容易理解的介绍&#xff1a…

如何在Ubuntu下安装 monodevelop

参考介绍 http://www.monodevelop.com/download/linux/ 首先&#xff0c;Add the Mono Project GPG signing key sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF 其次&#xff0c;Add the package repository echo "d…

百度地图定位地址为空

在使用百度地图定位的时候&#xff0c; BDLocation 不为空&#xff0c;但是&#xff0c;城市&#xff0c;地址各个字段都为空&#xff0c;需要设置option.setAddrType("all");全部代码为&#xff1a; mLocClient new LocationClient(this);mLocClient.registerLocat…

小程序循环里做字符串拼接_昨天还在for循环里写加号拼接字符串的那个同事,今天已经不在了...

引言都说 StringBuilder 在处理字符串拼接上效率要强于 String&#xff0c;但有时候我们的理解可能会存在一定的偏差。最近我在测试数据导入效率的时候就发现我以前对 StringBuilder 的部分理解是错误的。后来我通过实践测试 找原理 的方式搞清楚了这块的逻辑。现在将过程分享…

【T-SQL系列】新的排序函数

【T-SQL系列】新的排序函数 原文:【T-SQL系列】新的排序函数如&#xff1a;ROW_NUMBER、RANK、DENSE_RANK三个分析函数都是按照col1分组内从1开始排序 ROW_NUMBER() 是没有重复值的排序(即使两天记录相等也是不重复的)&#xff0c;可以利用它来实现分页 DENSE_RANK() 是连续排序…

java mysql修改表结构字段_【开发技术】java+mysql 更改表字段的步骤

1).首先通过SQL更改MYSQL库中的表结构(下面是一些例子)ALTER TABLE illegalactivate ADD macethaddress varchar(250) NOT NULL;Alter TABLE illegalactivate drop primary key;ALTER TABLE illegalactivate ADD CONSTRAINT PK_illegalactivate PRIMARY KEY ( macaddress…

kbengine通讯协议

通讯协议格式 客户端想要与KBEngine进行通讯需要与KBEngine使用相同的协议&#xff0c;KBEngine通讯协议分为如下两种类型: 确定长度类型: |-----------------------------------------------------------------| Packet | Len: 2Bytes | Len: N …

Oracle中exp的使用2

在使用exp的时候&#xff0c;需要注意以下几点当前客户端版本、目标客户端的版本、注意需要设置字符集&#xff0c;也就是NLS_LANG 参考oracle字符集的设置NLS_LANG格式为&#xff1a;[NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET].NLS_LANGUAGE指的是Oracle消息使用的语…

shell 编程(难题分析)

一、基础知识&#xff1a;http://www.aminglinux.com/bbs/thread-6833-1-1.html 一、grep用grep把passwd文档中包含root或者‘500’的行过滤出来&#xff0c;并在过滤出来的行前面加上行号.grep -n root\|500 passwdr.o 如r1o,rto都满足该条件&#xff0c;.表示匹配…

阿里云rds升级mysql8_为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!...

2019年5月29日15时&#xff0c;阿里云RDS for MySQL 8.0正式上线&#xff0c;使得阿里云成为紧跟社区步伐&#xff0c;发布MySQL最新版本的云厂商。RDS for MySQL 8.0 产品是阿里云推出的 MySQL 系列云产品之一&#xff0c;使用完全兼容 MySQL 8.0 的阿里云 AliSQL 8.0 分支&am…

Log4net 列

配置<configuration> <configSections> <section name"log4net" type"System.Configuration.IgnoreSectionHandler"/> </configSections><log4net> <!--定义输出到文件中--> <appender name"LogFileAppender&…

分布式系统的开发经验与心得

与近期与InfoQ的一次对话中&#xff0c;Vaughn Vernon分享了一些他在开发分布式系统方面的心得。他特别指出&#xff0c;在分布式系统中&#xff0c;有可能会出现局部故障之类的问题。对于这种类型的问题以及一些其它挑战来说&#xff0c;最佳的应对方式是做好一切准备&#xf…

mysql gtid 还是pxc_记一次 PXC 集群拆分引发的思考

原标题&#xff1a;记一次 PXC 集群拆分引发的思考作者简介冷正磊2018年2月加入去哪儿网 DBA 团队&#xff0c;主要负责机票业务的 MySQL 和 Redis 数据库的运维管理工作&#xff0c;以及数据库自动化运维平台部分功能的开发工作&#xff0c;对数据库技术具有浓厚兴趣&#xff…

一个奇怪的注意事项TNS-12545 TNS-12560 TNS-00515

近来的reportDB无法从一开始就与系统收听&#xff0c;比较奇怪的现象。由于server有听众的一个实例上正常启动&#xff0c;这是不是从开始监听器的实例手动启动是正常的。所以写下来未能找到离奇写的原因。1、故障现象Starting CRON daemondone Oracle 10g auto start/stop Sta…