我正在測試運行在Apache Web服務器上的Python Flask Web應用程序的限制,通過發出需要超過30分鐘才能完成的請求。請求需要成千上萬的數據庫請求(一前一後)到MySQL數據庫。我明白這一點最好應運行的Apache服務器之外的單獨的異步處理,但讓我們忽略了現在。我遇到的問題是,雖然這個時候我測試了我的Mac上運行完全,它在Linux服務器(AWS上亞馬遜EC2的Linux)上運行時,它突然死亡。我一直無法弄清楚究竟是什麼殺了它。我檢查過服務器沒有用完內存。該過程使用很少的RAM。我已經無法找到任何Apache的配置參數,或者對我來說很有意義(甚至apache的日誌級別設置爲調試後)的錯誤信息。請問我需要尋求幫助。關於我的設置我這裏還有更多的細節:Apache/mod_wsgi進程意外死掉
運行時間
服務器:之後8分鐘,27mins死亡,分別21mins & 22mins。請注意,大多數這些運行的是一個UAT服務器上,這是服務器正在處理的唯一請求。
的Mac:它跑慢得多,它在服務器上運行。該過程成功運行,耗時2小時47分鐘。
Linux服務器細節:
2個虛擬CPU和4GB RAM
OS(的uname -a
輸出)
Linux的IP-172-31-63-211 3.14.44-32.39 .amzn1.x86_64#1 SMP Thu Jun 11 20:33:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Apache error_log:https://drive.google.com/file/d/0B3XXZfJyzJYsNkFDU3hJekRRUlU/view?usp=sharing
Apache的配置文件:
Apache的版本(的apachectl -V
輸出)
Server version: Apache/2.4.23 (Amazon)
Server built: Jul 29 2016 21:42:17
Server's Module Magic Number: 20120211:61
Server loaded: APR 1.5.1, APR-UTIL 1.4.1
Compiled using: APR 1.5.1, APR-UTIL 1.4.1
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-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=256
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="/var/run/httpd/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Mac的詳情:
Apache的配置文件:https://drive.google.com/file/d/0B3XXZfJyzJYsRUd6NW5NY3lON1U/view?usp=sharing
Apache的版本(輸出apachectl -V
)
Server version: Apache/2.4.18 (Unix)
Server built: Feb 20 2016 20:03:19
Server's Module Magic Number: 20120211:52
Server loaded: APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_FLOCK_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=256
-D HTTPD_ROOT="/usr"
-D SUEXEC_BIN="/usr/bin/suexec"
-D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"
隨着您提供的信息,現在最好的人都可以做的事情是猜測,因爲沒有足夠的可以繼續下去。至少爲Apache設置''LogLevel''爲''info''並查看mod_wsgi關於進程重啓的說明。另外請確認您已經使用了mod_wsgi守護進程模式,正如已經指出的那樣可能是一個問題。請參閱http://modwsgi.readthedocs.io/en/develop/user-guides/checking-your-installation.html#embedded-or-daemon-mode –