OOM-killer 是什么,为什么会导致 PHP 服务挂掉

2025年3月27日系统运维评论2,342字数 526阅读1分45秒阅读模式

真的是有点无语,今天无聊点了下之前部署的几个网站服务,发现返回 502 错误,以为是服务器挂掉了。

结果还能登录,一切操作正常,赶紧排查,最后锁定了问题,是 PHP 服务挂掉了。

查看了下 php-fpm 状态,已经停止服务了,有一条错误信息:php-fpm.service: A process of this unit has been killed by the OOM killer.

SCR-20250327-kscj-2

OOM-killer 是啥

OOM全称是Out Of Memory,这是 Linux 的 “内存保护机制”。

当系统内存耗尽时,为了防止崩溃,会自动选择 “吃内存最多” 或 “不重要” 的进程杀掉,以保证系统核心服务不崩溃。

而在我这里,因为主要用的服务还是 php-fpm,所以理所当然的,它就被停止了。

原因找到,重启下 php-fpm 服务,网站就都恢复了。

更多

如果服务器内存太小,还是挺容易导致 php-fpm 或者 mysqld 服务挂掉的,可以考虑增加内存或者优化服务配置来解决下,比如我这里,可以考虑调整下 php-fpmpm 模式,或者调整下 mysqlinnodb_buffer_pool_size 等。

另外,交换内存也是一个不错的选择,可以在内存不足时,把一部分硬盘空间当作内存使用,这样可以避免 OOM-killer 杀掉服务。

如何使用 Nginx 屏蔽恶意请求并防御基础攻击 系统运维

如何使用 Nginx 屏蔽恶意请求并防御基础攻击

最近一个图床服务总是打开特别慢,查看了下后台日志,发现在被频繁的攻击,而且获取到了我的管理员账号,一直在尝试登录管理员账号。 但是因为请求主要以 Bot 为主,就判断对方为正常的爬虫吧,这种情况一般 ...
在 Linux 中使用 logrotate 管理日志文件 系统运维

在 Linux 中使用 logrotate 管理日志文件

logrotate 是一个在 Linux 操作系统中用来管理日志文件的工具。其主要功能是帮助系统管理员自动管理和轮换日志文件,防止日志文件过大,占用过多的磁盘空间。logrotate 可以定期对日志文...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定