我有;
- PHP 7.3 中使用 CodeIgniter 框架的 CRUD 重负载应用程序。
- 只有 2 个用户访问应用程序。
- 数据库是 mariadb 10.2,有 10 个表。通常,存储的 INT 和引擎默认是 InnoDB,但在表中,我存储了一个“mediumtext”列。
- 由 cronjobs 管理的应用程序(每分钟 10 个不同的作业)
- 一个工作的平均收益是来自 DB 的 100-200 CRUD。(总共 ~ 1k-2k CRUD 在一分钟内使用 10 个表)
经测试;
MySQL 中的持久连接我遇到了最大连接超出的问题,所以我注意到如果你没有在 database.php 中将 pconnect 设置为 true,Code Igniter 不会关闭连接。因此,简化一下,如果您将其设置为 true,它会使用允许持久连接。所以,我想解决这个问题,我找到了一个需要将其设置为false的解决方案,它会自动关闭所有连接。我更改了配置以禁止持久连接。
在我更新持久连接后禁用。我的应用程序开始正常运行,1 小时后,由于下面显示的几个错误,它再次崩溃,我通过在 mariadb 的 my.cnf 中将max_allow_package设置为最大值来修复这些错误。
警告 --> 发送 QUERY 数据包时出错。PID=2434 查询错误:MySQL 服务器已消失
- 我注意到数据库需要调整。数据库大小为 1GB+。我每分钟都有很多 CRUD 作业。因此,我将缓冲区大小更改为 1GB,将 innodb 引擎池大小更改为 %25。我习惯了MySQL Tuner,并用它来计算这些变量。
最后,我仍然收到查询包错误。
数据包乱序。预期 0 收到 1. 数据包大小=23
我的服务器有 8GB 内存(使用了 %25),4 核 x 2ghz(使用了 %10)我现在无法确定哪种配置是最佳选择。我无法增加 RAM,也 %25 使用了 ram,因为密钥缓冲区大小为 1GB,它可以充分利用 ram 即时作业。
我可以吗;
- 修复数据库错误,
- 增加平均完成的 CRUD 过程