我的网站在浏览器上停止加载,并且在我重新启动 apache2 后立即恢复运行。
我使用的 Amazon AWS ububuntu 服务器于 3 个月前从 t2.micro 迁移至 t2.large(vCPU:2、CPU 积分/小时:36、内存(GiB)8)。
这是apache2的日志:
[Tue Dec 15 09:04:41.976924 2015] [autoindex:error] [pid 31049] [client 66.66.66.666:53331] AH01276: Cannot serve directory /var/www/html/wp-content/themes/twentyfifteen-child/images/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive, referer: http://www.example.com/blog/
[Tue Dec 15 18:28:59.565037 2015] [autoindex:error] [pid 31987] [client 50.115.68.210:13697] AH01276: Cannot serve directory /var/www/html/wp-content/themes/twentyfifteen-child/images/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive, referer: http://www.example.com/wp-content/themes/twentyfifteen-child/style.css?ver=4.3.1
[Wed Dec 16 02:34:52.643069 2015] [mpm_prefork:error] [pid 27704] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
[Wed Dec 16 10:40:04.422974 2015] [core:notice] [pid 27704] AH00051: child pid 28345 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Wed Dec 16 10:40:04.423039 2015] [core:notice] [pid 27704] AH00051: child pid 28512 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Wed Dec 16 10:40:04.423089 2015] [core:notice] [pid 27704] AH00051: child pid 28347 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Wed Dec 16 10:40:04.423174 2015] [core:notice] [pid 27704] AH00051: child pid 27850 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Wed Dec 16 10:40:04.423220 2015] [core:notice] [pid 27704] AH00051: child pid 13545 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Wed Dec 16 10:40:04.423259 2015] [core:notice] [pid 27704] AH00051: child pid 31810 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Wed Dec 16 10:40:04.423297 2015] [core:notice] [pid 27704] AH00051: child pid 28520 exit signal Segmentation fault (11), possible coredump in /etc/apache2
问题确实在 10:40 左右开始(你可以在日志中看到)
这就是MaxRequestWorkers
。
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 256
MaxConnectionsPerChild 1000
</IfModule>
有人能帮我调试我的服务器上的问题吗?
可能存在什么问题?
编辑:
GBD输出:
(gdb) gdb apache2 -core /tmp/apache-coredumps/core
[1]+ Stopped gdb /usr/sbin/apache2
root@ip-66-66-66-66:/# db apache2 -core /tmp/apache-coredumps/core
db: command not found
root@ip-66-66-66-66:/# gdb apache2 -core /tmp/apache-coredumps/core
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from apache2...Reading symbols from /usr/lib/debug//usr/sbin/apache2...done.
done.
[New LWP 6194]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
warning: the debug information found in "/usr/lib/debug//usr/lib/php5/20121212/mysql.so" does not match "/usr/lib/php5/20121212/mysql.so" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug/usr/lib/php5/20121212/mysql.so" does not match "/usr/lib/php5/20121212/mysql.so" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug//usr/lib/php5/20121212/mysqli.so" does not match "/usr/lib/php5/20121212/mysqli.so" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug/usr/lib/php5/20121212/mysqli.so" does not match "/usr/lib/php5/20121212/mysqli.so" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug//usr/lib/php5/20121212/pdo_mysql.so" does not match "/usr/lib/php5/20121212/pdo_mysql.so" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug/usr/lib/php5/20121212/pdo_mysql.so" does not match "/usr/lib/php5/20121212/pdo_mysql.so" (CRC mismatch).
Core was generated by `/usr/sbin/apache2 -k start'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 _zend_mm_free_int (heap=0x7f4b910ecfb0, p=0x7f4b910f0e70) at /build/php5-pO28mL/php5-5.5.9+dfsg/Zend/zend_alloc.c:2104
2104 /build/php5-pO28mL/php5-5.5.9+dfsg/Zend/zend_alloc.c: No such file or directory.
答案1
您的服务器可能只是发生了简单的过载。我无法判断,即使是 t2.micro,因为它依赖于太多参数。
有一些方法可以防止此类崩溃。最简单的方法之一就是安装监控。这是一项可以监控 Apache 的服务,如果发现连接过多,则重新启动它。您也可以将 Monit 用于其他进程。
答案2
[core:notice] [pid 27704] AH00051:子 pid 28345 退出信号分段错误 (11),/etc/apache2 中可能出现核心转储
看起来你的应用程序可能有错误。您可以将 gdb 附加到其中一个进程,等待它再次崩溃,然后获取回溯并从那里开始工作。
您可能还想查看其他日志,看看是否有任何相关的信息可以帮助追踪问题。