我正在通过发出需要 30 多分钟才能完成的请求来测试在 Apache Web 服务器上运行的 Python Flask Web 应用程序的极限。该请求需要向 MySQL 数据库发出数千个数据库请求(一个接一个)。我知道这应该理想地作为 Apache 服务器之外的单独异步进程运行,但现在我们先忽略这一点。我遇到的问题是,虽然它在我在我的 Mac 上测试时可以完全运行,但在 Linux 服务器(AWS EC2 上的 Amazon Linux)上运行时它会突然死机。我无法弄清楚到底是什么导致了它死机。我已检查服务器没有内存不足。该进程占用的 RAM 非常少。我找不到任何 Apache 配置参数或任何对我来说有意义的错误消息(即使在将 apache logLevel 设置为调试之后)。请帮助我查找位置。以下是有关我的设置的更多详细信息:
运行
服务器:它分别在 8 分钟、27 分钟、21 分钟和 22 分钟后死机。请注意,这些运行中的大多数都在 UAT 服务器上进行,这是服务器正在处理的唯一请求。
苹果:它的运行速度比在服务器上运行慢得多。该过程成功运行,耗时 2 小时 47 分钟。
Linux 服务器详细信息:
2 个虚拟 CPU 和 4GB RAM
操作系统(输出uname -a
)
Linux ip-172-31-63-211 3.14.44-32.39.amzn1.x86_64 #1 SMP 星期四 6 月 11 日 20:33:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Apache 错误日志: https://drive.google.com/file/d/0B3XXZfJyzJYsNkFDU3hJekRRUlU/view?usp=sharing
Apache 配置文件: https://drive.google.com/file/d/0B3XXZfJyzJYsM2lhSmxfVVRNNjQ/view?usp=sharing
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"