Magento 使 MySQL 每天崩溃 1 或 2 次
Magento make MySQL crash 1 or 2 times every day
我目前运行在社区版 (CE) 1 上创建一个 Magento 商店。9.X.X。
商店完美 运行 过去几个月(我们已于 2014 年 11 月推出网站)。
最近 2-3 周,MySQL 每天都开始崩溃。我已经分析了 Magento 的 SQL 日志,我已经激活了 system.log 和 exceptions.log 以查看是否发生了一些特殊的事情,但是什么都没有...
目前,MySQL 在崩溃时说的是:
150127 14:29:50 mysqld_safe Number of processes running now: 0
150127 14:29:50 mysqld_safe mysqld restarted
2015-01-27 14:29:58 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-01-27 14:29:58 11145 [Note] Plugin 'FEDERATED' is disabled.
2015-01-27 14:29:59 7f4395db8720 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
2015-01-27 14:29:59 11145 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-01-27 14:29:59 11145 [Note] InnoDB: The InnoDB memory heap is disabled
2015-01-27 14:29:59 11145 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-01-27 14:29:59 11145 [Note] InnoDB: Memory barrier is not used
2015-01-27 14:29:59 11145 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-01-27 14:29:59 11145 [Note] InnoDB: Using Linux native AIO
2015-01-27 14:29:59 11145 [Note] InnoDB: Using CPU crc32 instructions
2015-01-27 14:29:59 11145 [Note] InnoDB: Initializing buffer pool, size = 5.0G
2015-01-27 14:30:24 11145 [Note] InnoDB: Completed initialization of buffer pool
2015-01-27 14:30:24 11145 [ERROR] InnoDB: InnoDB: Unable to allocate memory of size 2147484264.
2015-01-27 14:30:24 7f4395db8720 InnoDB: Assertion failure in thread 139928253728544 in file ha_innodb.cc line 17106
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
19:30:24 UTC - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.
key_buffer_size=8388608
read_buffer_size=131072
max_used_connections=0
max_threads=151
thread_count=0
connection_count=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 68245 K bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0 thread_stack 0x40000
/usr/sbin/mysqld(my_print_stacktrace+0x35)[0x8cd6c5]
/usr/sbin/mysqld(handle_fatal_signal+0x494)[0x661af4]
/lib64/libpthread.so.0(+0xf710)[0x7f439599b710]
/lib64/libc.so.6(gsignal+0x35)[0x7f4394646625]
/lib64/libc.so.6(abort+0x175)[0x7f4394647e05]
/usr/sbin/mysqld[0x9658f3]
/usr/sbin/mysqld[0x9ad927]
/usr/sbin/mysqld[0x9a3083]
/usr/sbin/mysqld[0xa215aa]
/usr/sbin/mysqld[0x96c09d]
/usr/sbin/mysqld(_Z24ha_initialize_handlertonP13st_plugin_int+0x48)[0x5a8458]
/usr/sbin/mysqld[0x6e7aa1]
/usr/sbin/mysqld(_Z11plugin_initPiPPci+0xbf6)[0x6eb6f6]
/usr/sbin/mysqld[0x59b22d]
/usr/sbin/mysqld(_Z11mysqld_mainiPPc+0x3e5)[0x5a01d5]
/lib64/libc.so.6(__libc_start_main+0xfd)[0x7f4394632d5d]
/usr/sbin/mysqld[0x5925b5]
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
我运行使用 WHM/CPanel 在专用服务器上安装 Magento。
这是我的 my.cnf(自定义 my.cnf,WHM 上 MySQL 的其他默认值):
[mysqld]
innodb_file_per_table=1
bind-address=127.0.0.1
innodb_buffer_pool_size=5G
open_files_limit=10000
innodb_open_files=300
query_cache_type=1
query_cache_size=1G
query_cache_limit=256M
max_allowed_packet=512M
innodb_additional_mem_pool_size=4096M
innodb_log_buffer_size=2048M
bulk_insert_buffer_size=512M
我真的不知道现在发生了什么。希望有人能帮我跟踪并找到问题所在。
当 MySQL 服务器崩溃时,我收到一封来自服务器的电子邮件:
Time: Wed Jan 28 09:28:45 2015 -0500
1 Min Load Avg: 7.91
5 Min Load Avg: 6.15
15 Min Load Avg: 3.27
Running/Total Processes: 9/398
并且多个脚本使用了 96% 的 CPU :
root 3351 0.0 0.0 76720 5956 ? Ss Jan22 0:31 /usr/local/apache/bin/httpd -k start -DSSL
root 8111 0.0 0.0 79560 10316 ? S 08:16 0:00 \_ /usr/local/cpanel/3rdparty/bin/perl /usr/local/cpanel/bin/leechprotect
nobody 18857 0.0 0.0 77440 6364 ? S 08:48 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 32031 96.0 5.1 1812740 1702668 ? R 09:21 7:12 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 21687 0.0 0.0 77420 6216 ? S 08:55 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
nobody 27499 0.0 0.0 77568 6360 ? S 09:11 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 32707 95.6 3.8 1373164 1259928 ? R 09:23 5:30 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 27937 0.0 0.0 77420 6220 ? S 09:12 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
nobody 28499 0.0 0.0 77432 6248 ? S 09:13 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 31897 96.1 5.4 1902860 1793256 ? R 09:20 7:29 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 29172 0.0 0.0 77436 6220 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 2873 0.0 0.0 127356 22328 ? R 09:28 0:00 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 29201 0.0 0.0 77104 5264 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 32215 96.1 4.7 1679356 1568032 ? R 09:21 6:44 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 29223 0.0 0.0 77120 5756 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 32035 96.2 5.1 1800248 1690280 ? R 09:21 7:12 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 29241 0.0 0.0 77432 6224 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
nobody 29245 0.0 0.0 77432 6228 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
nobody 29247 0.0 0.0 77432 6212 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 31646 96.1 6.1 2126108 2018664 ? R 09:20 8:10 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 29257 0.0 0.0 77436 6252 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
nobody 29261 0.0 0.0 77112 5748 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 31460 96.1 6.5 2249252 2142760 ? R 09:19 8:30 | \_ /usr/bin/php /home/user/public_html/magento/index.php
谢谢,
santerref.
我的问题是日志记录。一个 table 太大,加载时间太长。
为了解决我的问题,我每天清空 table log_visitor_online
并在 系统 » 配置 » 高级中启用 日志清理 » 系统 » 日志.
必须启用CRON,否则日志清理将不起作用,table仍会继续增加。
我目前运行在社区版 (CE) 1 上创建一个 Magento 商店。9.X.X。
商店完美 运行 过去几个月(我们已于 2014 年 11 月推出网站)。
最近 2-3 周,MySQL 每天都开始崩溃。我已经分析了 Magento 的 SQL 日志,我已经激活了 system.log 和 exceptions.log 以查看是否发生了一些特殊的事情,但是什么都没有...
目前,MySQL 在崩溃时说的是:
150127 14:29:50 mysqld_safe Number of processes running now: 0
150127 14:29:50 mysqld_safe mysqld restarted
2015-01-27 14:29:58 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-01-27 14:29:58 11145 [Note] Plugin 'FEDERATED' is disabled.
2015-01-27 14:29:59 7f4395db8720 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
2015-01-27 14:29:59 11145 [Note] InnoDB: Using atomics to ref count buffer pool pages
2015-01-27 14:29:59 11145 [Note] InnoDB: The InnoDB memory heap is disabled
2015-01-27 14:29:59 11145 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2015-01-27 14:29:59 11145 [Note] InnoDB: Memory barrier is not used
2015-01-27 14:29:59 11145 [Note] InnoDB: Compressed tables use zlib 1.2.3
2015-01-27 14:29:59 11145 [Note] InnoDB: Using Linux native AIO
2015-01-27 14:29:59 11145 [Note] InnoDB: Using CPU crc32 instructions
2015-01-27 14:29:59 11145 [Note] InnoDB: Initializing buffer pool, size = 5.0G
2015-01-27 14:30:24 11145 [Note] InnoDB: Completed initialization of buffer pool
2015-01-27 14:30:24 11145 [ERROR] InnoDB: InnoDB: Unable to allocate memory of size 2147484264.
2015-01-27 14:30:24 7f4395db8720 InnoDB: Assertion failure in thread 139928253728544 in file ha_innodb.cc line 17106
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
19:30:24 UTC - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.
key_buffer_size=8388608
read_buffer_size=131072
max_used_connections=0
max_threads=151
thread_count=0
connection_count=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 68245 K bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 0 thread_stack 0x40000
/usr/sbin/mysqld(my_print_stacktrace+0x35)[0x8cd6c5]
/usr/sbin/mysqld(handle_fatal_signal+0x494)[0x661af4]
/lib64/libpthread.so.0(+0xf710)[0x7f439599b710]
/lib64/libc.so.6(gsignal+0x35)[0x7f4394646625]
/lib64/libc.so.6(abort+0x175)[0x7f4394647e05]
/usr/sbin/mysqld[0x9658f3]
/usr/sbin/mysqld[0x9ad927]
/usr/sbin/mysqld[0x9a3083]
/usr/sbin/mysqld[0xa215aa]
/usr/sbin/mysqld[0x96c09d]
/usr/sbin/mysqld(_Z24ha_initialize_handlertonP13st_plugin_int+0x48)[0x5a8458]
/usr/sbin/mysqld[0x6e7aa1]
/usr/sbin/mysqld(_Z11plugin_initPiPPci+0xbf6)[0x6eb6f6]
/usr/sbin/mysqld[0x59b22d]
/usr/sbin/mysqld(_Z11mysqld_mainiPPc+0x3e5)[0x5a01d5]
/lib64/libc.so.6(__libc_start_main+0xfd)[0x7f4394632d5d]
/usr/sbin/mysqld[0x5925b5]
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
我运行使用 WHM/CPanel 在专用服务器上安装 Magento。
这是我的 my.cnf(自定义 my.cnf,WHM 上 MySQL 的其他默认值):
[mysqld]
innodb_file_per_table=1
bind-address=127.0.0.1
innodb_buffer_pool_size=5G
open_files_limit=10000
innodb_open_files=300
query_cache_type=1
query_cache_size=1G
query_cache_limit=256M
max_allowed_packet=512M
innodb_additional_mem_pool_size=4096M
innodb_log_buffer_size=2048M
bulk_insert_buffer_size=512M
我真的不知道现在发生了什么。希望有人能帮我跟踪并找到问题所在。
当 MySQL 服务器崩溃时,我收到一封来自服务器的电子邮件:
Time: Wed Jan 28 09:28:45 2015 -0500
1 Min Load Avg: 7.91
5 Min Load Avg: 6.15
15 Min Load Avg: 3.27
Running/Total Processes: 9/398
并且多个脚本使用了 96% 的 CPU :
root 3351 0.0 0.0 76720 5956 ? Ss Jan22 0:31 /usr/local/apache/bin/httpd -k start -DSSL
root 8111 0.0 0.0 79560 10316 ? S 08:16 0:00 \_ /usr/local/cpanel/3rdparty/bin/perl /usr/local/cpanel/bin/leechprotect
nobody 18857 0.0 0.0 77440 6364 ? S 08:48 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 32031 96.0 5.1 1812740 1702668 ? R 09:21 7:12 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 21687 0.0 0.0 77420 6216 ? S 08:55 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
nobody 27499 0.0 0.0 77568 6360 ? S 09:11 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 32707 95.6 3.8 1373164 1259928 ? R 09:23 5:30 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 27937 0.0 0.0 77420 6220 ? S 09:12 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
nobody 28499 0.0 0.0 77432 6248 ? S 09:13 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 31897 96.1 5.4 1902860 1793256 ? R 09:20 7:29 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 29172 0.0 0.0 77436 6220 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 2873 0.0 0.0 127356 22328 ? R 09:28 0:00 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 29201 0.0 0.0 77104 5264 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 32215 96.1 4.7 1679356 1568032 ? R 09:21 6:44 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 29223 0.0 0.0 77120 5756 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 32035 96.2 5.1 1800248 1690280 ? R 09:21 7:12 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 29241 0.0 0.0 77432 6224 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
nobody 29245 0.0 0.0 77432 6228 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
nobody 29247 0.0 0.0 77432 6212 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 31646 96.1 6.1 2126108 2018664 ? R 09:20 8:10 | \_ /usr/bin/php /home/user/public_html/magento/index.php
nobody 29257 0.0 0.0 77436 6252 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
nobody 29261 0.0 0.0 77112 5748 ? S 09:14 0:00 \_ /usr/local/apache/bin/httpd -k start -DSSL
user 31460 96.1 6.5 2249252 2142760 ? R 09:19 8:30 | \_ /usr/bin/php /home/user/public_html/magento/index.php
谢谢, santerref.
我的问题是日志记录。一个 table 太大,加载时间太长。
为了解决我的问题,我每天清空 table log_visitor_online
并在 系统 » 配置 » 高级中启用 日志清理 » 系统 » 日志.
必须启用CRON,否则日志清理将不起作用,table仍会继续增加。