За последние 24 часа нас посетили 21859 программистов и 1009 роботов. Сейчас ищут 643 программиста ...

502 Bad Gateway при 100 последовательных запросах AJAX

Тема в разделе "PHP для профи", создана пользователем AlexandrKulik, 20 июн 2021.

  1. AlexandrKulik

    AlexandrKulik Новичок

    С нами с:
    16 фев 2019
    Сообщения:
    14
    Симпатии:
    0
    Добрый день. Нужен совет профи, т.к. уже все перерыл ничего не помогает и не могу решить проблему.
    VPS Ubuntu стоит Nging +PHP-FPM7.4
    Сайт работает нормально, но как только клиент загружает у себя в кабинете свои профили их там 100+, то они прогружаются через AJAX последовательно, т.е. пошел запрос ответ запрос ответ и т.д. не параллельно, и вот каждый раз на какой то шаге обрывает и выдает ошибку 502 Bad Gateway

    Настройки PHP такие
    Код (Text):
    1. [rkoffice]
    2. pm = dynamic
    3. pm.max_children = 25
    4. pm.start_servers = 10
    5. pm.min_spare_servers = 10
    6. pm.max_spare_servers = 25
    7. pm.max_requests = 500
    8. php_admin_value[display_errors] = stderr
    9. php_admin_value[log_errors] = On
    10. php_admin_value[error_log] = /opt/php74/var/log/php.log
    11. slowlog = /opt/php74/var/log/php_slow.log
    12. request_slowlog_timeout=30s
    13. php_admin_value[error_reporting] = E_ALL & ~E_NOTICE
    14. ;listen = /var/www/php-fpm/rkoffice.sock
    15. listen = 127.0.0.1:9000
    16. listen.mode = 0660
    17. listen.owner = rkoffice
    18. listen.group = www-data
    19. user = rkoffice
    20. group = rkoffice
    21. chdir = /
    Настройки NGINX
    Код (Text):
    1. user www-data;
    2. worker_processes auto;
    3. worker_cpu_affinity auto;
    4. worker_rlimit_nofile 30000;
    5.  
    6. error_log  /var/log/nginx/error.log warn;
    7. pid        /var/run/nginx.pid;
    8.  
    9.  
    10. events {
    11.     use epoll;
    12.     worker_connections 2048;
    13.     multi_accept on;
    14. }
    15.  
    16.  
    17. http {
    18.     include       /etc/nginx/mime.types;
    19.     default_type  application/octet-stream;
    20.  
    21.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    22.                       '$status $body_bytes_sent "$http_referer" '
    23.                       '"$http_user_agent" "$http_x_forwarded_for"';
    24.  
    25.     #access_log  /var/log/nginx/access.log  main;
    26.     access_log  off;
    27.    
    28.     limit_conn_zone $binary_remote_addr zone=lone:10m;
    29.     limit_req_zone $binary_remote_addr zone=ltwo:10m rate=20r/s;
    30.     limit_req_zone $binary_remote_addr zone=highspeed:10m rate=50r/s;
    31.    
    32.     proxy_connect_timeout 5;
    33.     proxy_send_timeout 10;
    34.     proxy_read_timeout 10;
    35.     proxy_buffer_size 4k;
    36.     proxy_buffers 32 16k;
    37.     proxy_busy_buffers_size 32k;
    38.    
    39.  
    40.     set_real_ip_from  127.0.0.1;
    41.     sendfile        on;
    42.     tcp_nopush     on;
    43.     tcp_nodelay on;
    44.     types_hash_max_size 2048;
    45.    
    46.     client_body_buffer_size 128k;
    47.         client_header_buffer_size 4k;
    48.         ###fastcgi_buffers 64 4K;
    49.         fastcgi_buffer_size 32k;
    50.         fastcgi_buffers 256 16k;
    51.         fastcgi_max_temp_file_size 0;
    52.         fastcgi_connect_timeout 300;
    53.         large_client_header_buffers 8 32k;
    54.         client_body_timeout   10;
    55.         client_header_timeout 10;
    56.         keepalive_timeout     65000;
    57.         send_timeout          10;
    58.         reset_timedout_connection on;
    59.         server_names_hash_bucket_size 64;
    60.         server_tokens off;
    61.        
    62.         gzip  on;
    63.         gzip_static on;
    64.         gzip_min_length 1100;
    65.         gzip_buffers 64 8k;
    66.         gzip_comp_level 3;
    67.         gzip_http_version 1.1;
    68.         gzip_proxied any;
    69.         gzip_types text/plain application/xml application/x-javascript text/css;
    70.        
    71.         ##proxy_connect_timeout  600s;
    72.         ##proxy_send_timeout  600s;
    73.         ##proxy_read_timeout  600s;
    74.         fastcgi_send_timeout 600s;
    75.         fastcgi_read_timeout 600s;
    76.         server_name_in_redirect off;
    77.     include /etc/nginx/conf.d/*.conf;
    78.     include /etc/nginx/vhosts/*/*.conf;
    79.     client_max_body_size 1024m;
    80.     server {
    81.         server_name localhost;
    82.     disable_symlinks if_not_owner;
    83.     include /etc/nginx/vhosts-includes/*.conf;
    84.     location @fallback {
    85.         error_log /dev/null crit;
    86.         proxy_pass http://127.0.0.1:8080;
    87.         proxy_redirect http://127.0.0.1:8080 /;
    88.         proxy_set_header Host $host;
    89.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    90.         proxy_set_header X-Forwarded-Proto $scheme;
    91.         access_log off ;
    92.     }
    93.     listen 80;
    94.     listen [::]:80;
    95.     }
    96. }
    В настройках Loaction так
    Код (Text):
    1. location / {
    2.         location ~ [^/]\.ph(p\d*|tml)$ {
    3.             try_files /does_not_exists @php;
    4.         }
    5.         location / {
    6.             try_files $uri $uri/ /index.php?$uri&$args; index index.php index.html;
    7.             limit_req zone=highspeed burst=600 nodelay;
    8.             fastcgi_buffers 16 256k;
    9.             fastcgi_buffer_size 512k;
    10.             #fastcgi_pass 127.0.0.1:9000;
    11.             #fastcgi_pass unix:/var/www/phpfpm/rkoffice.sock;
    12.         }
    13.         limit_req zone=highspeed burst=600 nodelay;
    14.         fastcgi_pass 127.0.0.1:9000;
    15.         #fastcgi_pass unix:/var/www/php-fpm/rkoffice.sock;
    16.     }
    17.     location @php {
    18.         fastcgi_index index.php;
    19.         fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f webmaster@rkroom.in.ua";
    20.         #fastcgi_pass unix:/var/www/php-fpm/rkoffice.sock;
    21.         fastcgi_pass 127.0.0.1:9000;
    22.         fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
    23.         try_files $uri =404;
    24.         include fastcgi_params;
    25.         limit_req zone=highspeed burst=600 nodelay;
    26.     }
    Может кто то сталкивался, поделитесь опытом, потому что уже много чего пробовал но не помогает вот вылазит периодически и все, думаю может какие то настройки по количесвту запросов в какой то промежуток времени где то срабатывает, потому что если меньше грузить не 100, а к пример 20 то нормально все отрабатывает, а когда 100 бывает на 50 обрывает бывает на 90 по разному
     
  2. twim32

    twim32 Активный пользователь

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Вы заработали ачивку "Серверный насильник" :D

    С вашим кодом явно что-то не так. 100 строк - фигня для сервера, но вы умудрились сделать невероятное.

    Я не имею ни малейшего понятия какие бизнес-процессы вы запускаете, поэтому мои полномочия на этом всё...
     
  3. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Сколько на одно выполнение:

    1. съедает памяти
    2. время выполнения
    3. запросов к базе

    Без этих цифр гадать о причинах смысла нет.
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    858
    Симпатии:
    132
    нет бюджета на сисака, всё сам...
     
  5. Zeraiz

    Zeraiz Новичок

    С нами с:
    5 сен 2021
    Сообщения:
    3
    Симпатии:
    0
    Попробуйте дебагнуть полноценно
    Xhprof в помощь, у него есть удобный ui который показывает полный трейс выполнения