Я тестирую лимит моего веб-приложения Python Flask, работающего на веб-сервере Apache, выполняя запрос, который занимает более 30 минут. Запрос требует тысячи запросов к базе данных (один за другим) к базе данных MySQL. Я понимаю, что в идеале это должен выполняться как отдельный асинхронный процесс вне сервера apache, но давайте пока проигнорируем это. Проблема, с которой я столкнулся, заключается в том, что, хотя это полностью выполняется, когда я тестирую его на своем Mac, он внезапно умирает при запуске на сервере Linux (Amazon linux на AWS EC2). Я не смог понять, что именно его убивает. Я проверил, что серверу не хватает памяти. Процесс использует очень мало оперативной памяти. Мне не удалось найти какой-либо параметр конфигурации Apache или какое-либо сообщение об ошибке, которое имеет для меня смысл (даже после настройки отладки для apache logLevel). Пожалуйста, мне нужна помощь, где искать. Вот больше подробностей о моей настройке:
Время выполнения
Сервер: Он умер через 8 минут, 27 минут, 21 минуту и 22 минуты соответственно. Обратите внимание, что большинство этих прогонов выполнялись на сервере UAT, и это был единственный запрос, который обрабатывал сервер.
Mac: Он работал намного медленнее, чем на сервере. Процесс прошел успешно и занял 2 часа 47 минут.
Детали Linux-сервера:
2 виртуальных процессора и 4 ГБ оперативной памяти
ОС (вывод uname -a
)
Linux ip-172-31-63-211 3.14.44-32.39.amzn1.x86_64 # 1 SMP Чт 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: 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"