MariaDB在小型centos8服务器上无故停止工作

5q4ezhmt  于 2022-11-08  发布在  其他
关注(0)|答案(2)|浏览(233)

我有一个小型的网络/邮件服务器,上面有apache/mariadb。上周我们修改了一些WWW代码,为了让它正常工作,我修改了php.ini行:

max_input_vars to 5000 (now 4000, it was 1000 at the start)

它似乎改变了一些东西,因为我们的mariadb 10.3.28开始出现问题。它只是停止接收任何信息。重新启动mysql(和httpd)帮助现在24小时...日志:

2022-10-05 14:28:58 2796199 [Warning] Aborted connection 2796199 to db: 'ACTIVEDB' user: 'USER' host: 'localhost' (Got an error reading communication packets)

这种警告有时会出现,但现在我们每小时都会收到几十个。
在PHP中我减少了max_input_vars,在我的.cnf中我增加了dd

max_allowed_packet = 124M
max_connections = 400

log_warnings     = 3

一切都是在默认值之前。日志级别是一段时间在4级,但它开始变得太大,没有任何时间给“粉碎”。磁盘是nvme 500 GB,英特尔和显示没有问题。我想听到:

  • 如何检查/连接mariadb时,它看起来不活动
  • 检查内容和方法(逐步)

谢谢大家

brgchamk

brgchamk1#

这不是一个答案,但太长的评论。
如果客户端断开连接之前未向服务器发送COM_CLOSE通知,则会出现“Aborted connection...(读取通信数据包时出错)”错误。
此行为很容易重现,例如,通过启动命令行客户端并从另一个会话中删除命令行客户端。根据log_warning级别,服务器将写入一个日志条目并增加服务器状态变量aborted_clients(或aborted_connects,如果这发生在连接握手期间)。
以下是几个可能的原因:

  • 10.2.3之前的默认log_warning级别为1(不记录aborted_connections),10.2.4之后的默认值为2(记录已中止的连接)-如果服务器最近从10.2.3或更低版本升级,则该问题可能在以前的安装中已经存在,但未写入日志文件。
  • PHP脚本没有关闭连接:一旦脚本准备好工作,请确保所有事务都已提交,内存(结果集)已释放,连接已正确关闭。
  • 发生超时,例如wait_timeout设置得太低并超出,或超出PHP得max_execution_time(脚本被终止),或发生net_read/write_timeouts.
  • DNS问题:在这种情况下,请启用skip-name-resolve,使用IP并对照IP进行验证。
  • 网络或防火墙问题
4szc88ey

4szc88ey2#

我想感谢您的建议和您的时间。看起来有一个表的问题,我不知道如何/为什么,但一段时间后,它被设置为只读。日志中没有关于它的信息,直到第3级(第4级为我生成了太多的信息:()数据库工作了一段时间罚款(预计一个表),并在时间看起来像它只是挂起整个数据库。该案件仍在“调查中”。
关于“损坏”表:

  • 列出和只读相关的认为工作正常
  • insert/change将整个数据库挂起2-3分钟,然后返回工作状态
  • 在几次“挂起”后,DB就冻结了
  • 日志级别3中没有任何异常
  • 将表复制到新表,然后更改名称以切换表(我希望如此)

如果有人知道如何检查表将是伟大的(标准操作,如检查,分析什么都没有)。
再次感谢。

相关问题