好的,最近我将我的项目的大型更新推送到我的 Ubuntu 14 服务器上。
到目前为止,它一直很稳定,但自从每天 00:36 GMTmysql 被杀了!这不太理想,因为我们需要尽可能多的正常运行时间。我已经增加了错误日志记录,看看下次能否发现它。
我不认为这与资源有关...
我已检查以下内容:
- 服务器资源。没有出现峰值,很稳定,并且内存足够,至少有 200mb 可用。使用 Scoutapp 来跟踪这一点。
- 在那个确切的时间没有 cron 正在运行。
- 之前
key_buffer_size
是 16M,我刚刚把它调到 32MB。但是看不出是什么原因导致的。
错误日志
但是,我检查了崩溃时的日志,其中的内容如下:
141123 00:36:47 mysqld_safe Number of processes running now: 0
141123 00:36:47 mysqld_safe mysqld restarted
141123 0:36:48 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
141123 0:36:48 [Warning] The syntax '--log-slow-queries' is deprecated and will be removed in a future release. Please use '--slow-query-log'/'--slow-query-log-file' instead.
141123 0:36:48 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
141123 0:36:48 [Note] Plugin 'FEDERATED' is disabled.
141123 0:36:48 InnoDB: The InnoDB memory heap is disabled
141123 0:36:48 InnoDB: Mutexes and rw_locks use GCC atomic builtins
141123 0:36:48 InnoDB: Compressed tables use zlib 1.2.8
141123 0:36:48 InnoDB: Using Linux native AIO
141123 0:36:48 InnoDB: Initializing buffer pool, size = 128.0M InnoDB: mmap(137363456 bytes) failed; errno 12
141123 0:36:48 InnoDB: Completed initialization of buffer pool
141123 0:36:48 InnoDB: Fatal error: cannot allocate memory for the buffer pool
141123 0:36:48 [ERROR] Plugin 'InnoDB' init function returned error.
141123 0:36:48 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
141123 0:36:48 [ERROR] Unknown/unsupported storage engine: InnoDB
141123 0:36:48 [ERROR] Aborting
141123 0:36:48 [Note] /usr/sbin/mysqld: Shutdown complete
141123 00:36:48 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
那么这是否意味着……?
这是否意味着需要配置 InnoDB 引擎。我意识到 my.cnf 变量需要更改,但这些只是警告。
Fatal error: cannot allocate memory for the buffer pool
让我认为我需要为 InnoDB 设置一个较小的缓冲池大小,如果是的话,如何设置?
此外,在更新之前不会发生这种情况。但 VPS 只有 512mb RAM,流量不断增长,应用程序复杂性也随之增加,尤其是在更新之后。
我不明白为什么会发生这种事精确的每天同一时间。Ubuntu 是否运行更新,或者 Ubuntu 上是否有我应该知道的时间表,也许这会耗尽内存?
谢谢
-斯蒂芬
答案1
我建议您检查服务器中提供的内容。
服务器中是否有任何 cron 正在运行。您可以使用 cron 作业日志文件来验证这一点。日志文件位于路径:/var/log/syslog
检查特定时间的平均负载也有助于判断当时是否有其他消耗负载的进程启动。您可以检查 /var/log 位置上的系统日志来追踪它。
尝试将 key_buffer_size 减小到 1MB,然后观察是否仍然崩溃。如果仍然崩溃,升级 RAM 应该是最终选择。
我还建议您运行 mysqltuner 脚本并让我知道输出。