当正在运行的进程数0时,为什么MySQL重新启动

时间:2016-01-06 05:04:38

标签: mysql wordpress

一些背景知识。我在VPS中托管了一个WordPress站点,有时MYSQL下载错误“建立数据库连接错误”。我花了一些时间研究并认为问题是由于MySQL重新启动时,它无法分配足够的RAM来继续。

我相信我可以通过增加物理RAM或交换来改善这种情况。但我对这篇文章的问题是,为什么MySQL需要重启?我的网站流量很低,似乎数据库没有损坏。

以下是此问题的完整日志:

  • 160103 18:39:54 mysqld_safe现在运行的进程数:0
  • 160103 18:39:54 mysqld_safe mysqld restarted
  • 160103 18:39:55 [注意] / usr / libexec / mysqld(mysqld 5.5.44-MariaDB)从流程22061开始......
  • 160103 18:39:55 InnoDB:禁用InnoDB内存堆
  • 160103 18:39:55 InnoDB:Mutexes和rw_locks使用GCC原子内置
  • 160103 18:39:55 InnoDB:压缩表使用zlib 1.2.7
  • 160103 18:39:55 InnoDB:使用Linux原生AIO
  • 160103 18:39:55 InnoDB:初始化缓冲池,大小= 128.0M
  • InnoDB:mmap(137756672字节)失败; errno 12
  • 160103 18:39:55 InnoDB:完成缓冲池的初始化
  • 160103 18:39:55 InnoDB:致命错误:无法为缓冲池分配内存
  • 160103 18:39:56 [ERROR]插件'InnoDB'init函数返回错误。
  • 160103 18:39:56 [ERROR]插件'InnoDB'注册为存储引擎失败。
  • 160103 18:39:56 [错误] mysqld:内存不足(需要128917504字节)
  • 160103 18:39:56 [错误] mysqld:内存不足(需要96681984字节)
  • 160103 18:39:56 [错误] mysqld:内存不足(需要72499200字节)
  • 160103 18:39:56 [注意]插件'FEEDBACK'已禁用。
  • 160103 18:39:56 [错误]未知/不支持的存储引擎:InnoDB
  • 160103 18:39:56 [ERROR]正在中止

3 个答案:

答案 0 :(得分:2)

When Number of Processes Running Now 0表示MySQL没有运行。所以守护进程mysqld_safe“让你受宠”并启动MySQL

答案 1 :(得分:0)

您已将非常低的内存128MB分配给innodb_buffer_pool_size(默认RAM)。所以你应该指定约。如果你使用innodb引擎,这个变量的总RAM的80%,因为mysql使用这个变量的内存来缓存索引以及innodb引擎中的数据。

因此,在配置文件中将至少1 GB的RAM(应该是innodb总ram的80%)更新为innodb_buffer_pool_size并重新启动mysql服务。

<强>更新

您有1 GB RAM:您可以将800M RAM(或&gt; = 500M)分配给innodb_buffer_pool_size

当运行进程0的数量时,MySQL会自动重启:根据你共享的错误...这个错误是在mysql服务启动时发生的,服务器无法用这么少的RAM启动mysql服务。 / p>

160103 18:39:55 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137756672 bytes) failed; errno 12
160103 18:39:55 InnoDB: Completed initialization of buffer pool
160103 18:39:55 InnoDB: Fatal error: cannot allocate memory for the buffer pool

答案 2 :(得分:0)

我在CentOS 6.9上的MySQL遇到类似的问题。这是由于另一个PHP进程导致的内存不足而不是MySQL引起的。 MySQL只是一个受害者。

您可以查看内核消息。此消息的位置可能特定于OS。对于CentOS 6.x,它们位于/ var / log / messages中。

以下是/ var / log / messages中的一些相关消息:

Jul 25 20:34:46 myserver kernel: Out of memory: Kill process 21467 (mysqld) score 30 or sacrifice child
Jul 25 20:34:46 myserver kernel: Killed process 21467, UID 497, (mysqld) total-vm:757004kB, anon-rss:17728kB, file-rss:320kB

您可以运行以下命令来查看内核是否耗尽了内存:

cat /var/log/messages | grep  out_of_memory