我有一个与我的Django应用程序,它是与Apache / mod_wsgi托pipe的问题。 我在应用程序中添加了一些matplotlib代码,现在apache工作进程崩溃了。
我将这个问题归结为以下几点:
这里是日志条目:
[Tue May 24 08:29:08 2011] [notice] child pid 17576 exit signal Segmentation fault (11)
我不能在其他电脑上重现问题。 我尝试删除(rm site-packages / matplotli *)并安装不同版本的matplotlib(0.99.3,1.0.0,1.0.1)我尝试在virtualenv中安装所有模块,并从我的.wsgi脚本指向virtualenv。
我试过这个: Error:child pid 6695 exit signal Segmentation fault(11)我也读了http://code.google.com/p/modwsgi/wiki/ 。
任何指针如何debugging/解决这个问题将不胜感激。
(我甚至准备移动到任何其他服务器(粘贴/ cherrypy + Apache的mod_proxy等),以消除这个问题。)
这里是我的Apache设置:
/ usr / sbin / httpd -V
Server version: Apache/2.2.15 (Unix) Server built: Apr 10 2010 11:21:07 Server's Module Magic Number: 20051115:24 Server loaded: APR 1.3.9, APR-Util 1.3.10 Compiled using: APR 1.3.9, APR-Util 1.3.9 Architecture: 32-bit Server MPM: Prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APACHE_MPM_DIR="server/mpm/prefork" -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=128 -D HTTPD_ROOT="/etc/httpd" -D SUEXEC_BIN="/usr/sbin/suexec" -D DEFAULT_PIDLOG="logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_LOCKFILE="logs/accept.lock" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf"
/ usr / sbin / httpd -l
Compiled in modules: core.c prefork.c http_core.c mod_so.c
/ usr / sbin / httpd -M
Loaded Modules: core_module (static) mpm_prefork_module (static) http_module (static) so_module (static) auth_basic_module (shared) auth_digest_module (shared) authn_file_module (shared) authn_alias_module (shared) authn_anon_module (shared) authn_dbm_module (shared) authn_default_module (shared) authz_host_module (shared) authz_user_module (shared) authz_owner_module (shared) authz_groupfile_module (shared) authz_dbm_module (shared) authz_default_module (shared) ldap_module (shared) authnz_ldap_module (shared) include_module (shared) log_config_module (shared) logio_module (shared) env_module (shared) ext_filter_module (shared) mime_magic_module (shared) expires_module (shared) deflate_module (shared) headers_module (shared) usertrack_module (shared) setenvif_module (shared) mime_module (shared) dav_module (shared) status_module (shared) autoindex_module (shared) info_module (shared) dav_fs_module (shared) vhost_alias_module (shared) negotiation_module (shared) dir_module (shared) actions_module (shared) speling_module (shared) userdir_module (shared) alias_module (shared) rewrite_module (shared) wsgi_module (shared) ssl_module (shared) Syntax OK
Apacheconfiguration
<VirtualHost *:443> ServerName somesite.com DocumentRoot "/somedir" WSGIApplicationGroup %{GLOBAL} WSGIScriptAlias / /somedir/production.wsgi <..> </VirtualHost>
在你说你读过的wiki中,你应该已经发现:
http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Debugging_Crashes_With_GDB
作为一个侧面说明,建议您不要使用prefork / embedded模式。 用户mod_wsgi守护进程模式,如果你被迫使用prefork MPM。 读:
http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html
为什么一些原因。
其他人已经得到了matplotlib mod_wsgi工作,所以不是直接问题是什么。