打开网站MySQL报错:error establishing a database connection

安装LNMP 1.5版本,选择mysql5.6版本安装,网站偶尔出现数库连接错误导致挂掉。重启数据库又能连接上,看一下mysql错误日志,应该是内存占满导致的,2G内存的vps是伤不起的。。

MySQL重启的时候提示:

ERROR!
MySQL server PID file could not be found!
Gracefully shutting down php-fpm .
done

mysql错误日志

2019-03-23 02:05:56 20778 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2019-03-23 02:05:56 20778 [ERROR] InnoDB: Cannot allocate memory for the buffer pool

解决方式:

mysql5.6的默认配置是不适合小型站点的,linux在/etc/my.cnf里修改performance_schema_max_table_instances参数,有就修改,没有就追加:(参数根据自己的需求修改

performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256

修改完毕后,重启mysql服务,lnmp mysql restart,然后top后发现内存占用少了.


如果使用以上办法还是降不下来,在MySQL 配置文件中增加:performance_schema = off

MySQL 5.5版本以后新增一个存储引擎:命名performance_schema ,主要用于收集数据库服务器性能参数。在 5.6 版本中开始默认开启的一项功能,它会在 MySQL 启动之后悄悄占用 400M 左右的内存来加速 MySQL 的运行——对于动辄近百的企业级服务器来说,可能不值一提,但是对于咱们这种屌丝小 vps (我这个 1GB 独立内存算是不错的了)来说,可就要顶了天了!

所以,要关闭 Performance Schema ,在你的 MySQL 配置文件的  [mysqld] 字段添加一句

performance_schema = off

重启mysql服务,lnmp mysql restart,然后top后发现内存占用快速降下来了.

发表我的评论

请输入你的评论!
请在这里输入你的名字

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据