Linux系统优化

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

问题描述:

linux服务器中放了一个PHP的系统和系统配套使用的数据库MySQL。最近发现系统老是进不去,调查结果显示,MySQL服务挂了。

解决方案:尝试进入MySQL:


1
2
1mysql -r root -p
2

报错: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)

查看MySQL状态:


1
2
1service  mysqld  status
2

显示:Redirecting to /bin/systemctl status  mysqld.service
Unit mysqld.service could not be found.

原因:默认的这个环境一起安装了一个叫MariaDB的数据库(他是MySQL的一个分支版本),可百度查看这个数据库的详细信息。 也就是没有安装MySQL数据库,要使用MariaDB命令操作。

接着输入命令:


1
2
3
1 systemctl start mariadb.service
2
3

显示:Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

按照提示分别输入systemctl status mariadb.service 和 journalctl -xe 后,显示的内容没有任何报错原因提示。

查找数据库的错误日志:先看配置文件中配置的路径 cat /etc/my.cnf :Linux系统优化

再打开log-error后面路径中的文件即可: tail -f xxxxxx.log(从上面文件中找到的文件名),打开后就发现了错误原因:


1
2
3
4
5
6
7
8
1200328 11:41:13 InnoDB: Fatal error: cannot allocate memory for the buffer pool
2200328 11:41:13 [ERROR] Plugin 'InnoDB' init function returned error.
3200328 11:41:13 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
4200328 11:41:13 [Note] Plugin 'FEEDBACK' is disabled.
5200328 11:41:13 [ERROR] Unknown/unsupported storage engine: InnoDB
6200328 11:41:13 [ERROR] Aborting
7
8

也就是内存不够了,导致innoDb起不来,去配置启动时所需要的内存即可:


1
2
1vim /etc/my.cnf
2

在该文件中,找是否有innodb_buffer_pool_size 这个属性 ,如果有改成128M以内的值,如果没有则添加这个属性设置值:


1
2
3
1innodb_buffer_pool_size = 80M
2
3

保存退出。再启动数据库服务:


1
2
3
1 systemctl start mariadb.service
2
3

OK !!!! 顺利启动完成,再登陆到mysql 中就算启动成功了。

分界线——————————————————————————————————————————————————分界线

过了一会,服务器又挂了,what ??? 满脸黑人问号

使用命令:free -mh ,发现内存不多了,查看哪些进程占内存多:ps auxw –sort=%mem ,发现有一堆相同名字的进程占了很多内存:Linux系统优化

这是什么鬼,百度后发现这个时php -fpm服务的进程,这个进程有这么多,是因为可以开辟很多子进程,这个服务时可以配置的,修改配置文件:


1
2
3
1vim /etc/php-fpm.d/www.conf
2
3

找到 pm.max_children 字段,这个是控制子进程的数量的发现其值过大:我的是 pm.max_children 值为50,每一个进程占用1%-2.5%的内存,加起来就耗费大半内存了,所以我们需要将其值调小,将其设置为25,同时,检查以下两个属性:pm.max_spare_servers : 该值表示保证空闲进程数最大值,如果空闲进程大于此值,此进行清理 pm.min_spare_servers : 保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程;

这两个值均不能不能大于 pm.max_children 值,通常设置 pm.max_spare_servers 值为 pm.max_children 值的60%-80%。max_spare_servers 我设置为20

最后,重启php-fpm:systemctl restart php-fpm,报错了:

Linux系统优化

原因:这个服务已经在运行这,端口已经被占用了,那就简单了 ,先停掉,再启动即可:


1
2
3
1systemctl stop php-fpm
2systemctl start php-fpm
3

这个时候还要吧停掉的数据库服务启动下就好了:systemctl start mariadb.service,完成优化,内存使用情况也变好了。

希望能给遇到同样问题的人填坑。加油

给TA打赏
共{{data.count}}人
人已打赏
安全经验

google adsense作弊及反作弊技术分析

2021-10-11 16:36:11

安全经验

安全咨询服务

2022-1-12 14:11:49

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索