Laravel 11升级后MariaDB服务崩溃,疑似内存泄漏问询
Laravel 11升级后MariaDB因内存泄漏触发OOM崩溃问题
环境信息
- Laravel版本:11.1.0
- PHP版本:8.3.4
- 数据库驱动及版本:MariaDB 10.11
问题描述
升级到Laravel 11后,生产环境的MariaDB 10.11频繁崩溃,触发系统OOM Killer。服务器已稳定运行数年,此前使用各版本Laravel时,8GB内存使用率维持在75%-90%都能正常工作,现在被迫升级了服务器内存,怀疑Laravel 11的MariaDB驱动存在内存泄漏问题,同时想确认是否遗漏了必要的配置项。
Laravel 11与10的关键差异
- 移除了dbal包
- MariaDB驱动实现有变更
MariaDB崩溃日志(OOM Killer触发)
× mariadb.service - MariaDB 10.11 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: disabled) Active: failed (Result: oom-kill) since Thu 2024-03-28 04:00:36 EDT; 5min ago Duration: 1d 1h 19min 29.156s Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Process: 766 ExecStartPre=/usr/libexec/mariadb-check-socket (code=exited, status=0/SUCCESS) Process: 825 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS) Process: 874 ExecStart=/usr/libexec/mariadbd --basedir=/usr $MYSQLD_OPTS $_WSREP_NEW_CLUSTER (code=killed, signal=KILL) Process: 1443 ExecStartPost=/usr/libexec/mariadb-check-upgrade (code=exited, status=0/SUCCESS) Main PID: 874 (code=killed, signal=KILL) Status: "Taking your SQL requests now..." CPU: 2h 39min 52.288s Mar 27 02:41:07 domain-monitor-2022 mariadb-check-upgrade[1473]: 1. Back-up your data before with 'mariadb-upgrade' Mar 27 02:41:07 domain-monitor-2022 mariadb-check-upgrade[1473]: 2. Start the database daemon using 'systemctl start mariadb.service' Mar 27 02:41:07 domain-monitor-2022 mariadb-check-upgrade[1473]: 3. Run 'mariadb-upgrade' with a database user that has sufficient privileges Mar 27 02:41:07 domain-monitor-2022 mariadb-check-upgrade[1473]: Read more about 'mariadb-upgrade' usage at: Mar 27 02:41:07 domain-monitor-2022 mariadb-check-upgrade[1473]: https://mariadb.com/kb/en/mysql_upgrade/ Mar 27 02:41:07 domain-monitor-2022 systemd[1]: Started MariaDB 10.11 database server. Mar 28 04:00:36 domain-monitor-2022 systemd[1]: mariadb.service: A process of this unit has been killed by the OOM killer. Mar 28 04:00:36 domain-monitor-2022 systemd[1]: mariadb.service: Main process exited, code=killed, status=9/KILL Mar 28 04:00:36 domain-monitor-2022 systemd[1]: mariadb.service: Failed with result 'oom-kill'. Mar 28 04:00:36 domain-monitor-2022 systemd[1]: mariadb.service: Consumed 2h 39min 52.288s CPU time.
重启后内存占用情况
重启数据库服务近3小时后,内存占用已达1GB:
● mariadb.service - MariaDB 10.11 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: disabled) Active: active (running) since Thu 2024-03-28 04:25:45 EDT; 2h 23min ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Process: 834 ExecStartPre=/usr/libexec/mariadb-check-socket (code=exited, status=0/SUCCESS) Process: 887 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS) Process: 1182 ExecStartPost=/usr/libexec/mariadb-check-upgrade (code=exited, status=0/SUCCESS) Main PID: 946 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 95 (limit: 100205) Memory: 1.0G CPU: 15min 19.823s CGroup: /system.slice/mariadb.service └─946 /usr/libexec/mariadbd --basedir=/usr Mar 28 04:25:44 domain-monitor-2022 systemd[1]: Starting MariaDB 10.11 database server... Mar 28 04:25:44 domain-monitor-2022 mariadb-prepare-db-dir[887]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done. Mar 28 04:25:44 domain-monitor-2022 mariadb-prepare-db-dir[887]: If this is not the case, make sure the /var/lib/mysql is empty before running mariadb-prepare-db-dir. Mar 28 04:25:45 domain-monitor-2022 mariadb-check-upgrade[1212]: The datadir located at /var/lib/mysql needs to be upgraded using 'mariadb-upgrade' tool. This can be done using the fo> Mar 28 04:25:45 domain-monitor-2022 mariadb-check-upgrade[1212]: 1. Back-up your data before with 'mariadb-upgrade' Mar 28 04:25:45 domain-monitor-2022 mariadb-check-upgrade[1212]: 2. Start the database daemon using 'systemctl start mariadb.service' Mar 28 04:25:45 domain-monitor-2022 mariadb-check-upgrade[1212]: 3. Run 'mariadb-upgrade' with a database user that has sufficient privileges Mar 28 04:25:45 domain-monitor-2022 mariadb-check-upgrade[1212]: Read more about 'mariadb-upgrade' usage at: Mar 28 04:25:45 domain-monitor-2022 mariadb-check-upgrade[1212]: https://mariadb.com/kb/en/mysql_upgrade/ Mar 28 04:25:45 domain-monitor-2022 systemd[1]: Started MariaDB 10.11 database server.
内容的提问来源于stack exchange,提问作者Ryan H
相关产品推荐
相关产品推荐

