1

Я тестирую лимит моего веб-приложения 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"  

0