2017-01-13 15 views
0

У меня проблема с моей конфигурацией nginx, мой сервер отлично работает, но через 1 или 2 дня он просто зависает и перестает отвечать. Невозможно подключиться к серверу больше.nginx отказывается от соединений через некоторое время

(7) Failed to connect to XX.XX.XX.XX port 80: Connection refused 

Основная задача этого сервера работает PHP тяжелые задачи, я бегу хрон рабочих мест каждые 5 секунд для многих задач. Перезагрузка помогает и снова nginx работает правильно в течение следующих 1-2 дней. У меня нет журналов ошибок, nginx не сообщает ничего в /var/log/nginx/error.log. Он просто терпит неудачу при подключении. Любые идеи, с которых нужно искать проблему?

Я запускаю nginx на Ubuntu 16.04, 2 процессора, 4 ГБ оперативной памяти с PHP 7.0. Nginx версия: Nginx/1.10.0 (Ubuntu)

здесь конфигурационный файл:

user www-data; 
worker_processes 2; 
pid /run/nginx.pid; 

events { 
    worker_connections 4096; 
    #multi_accept on; 
} 

http { 

## 
# Basic Settings 
## 

sendfile on; 
tcp_nopush on; 
tcp_nodelay on; 
keepalive_timeout 300; 
types_hash_max_size 2048; 
server_tokens off; 

# server_names_hash_bucket_size 64; 
# server_name_in_redirect off; 

include /etc/nginx/mime.types; 
default_type application/octet-stream; 

## 
# SSL Settings 
## 

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE 
ssl_prefer_server_ciphers on; 

## 
# Logging Settings 
## 

access_log /var/log/nginx/access.log; 
error_log /var/log/nginx/error.log; 

## 
# Gzip Settings 
## 

gzip on; 
gzip_disable "msie6"; 

# gzip_vary on; 
# gzip_proxied any; 
# gzip_comp_level 6; 
# gzip_buffers 16 8k; 
# gzip_http_version 1.1; 
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; 

## 
# Virtual Host Configs 
## 

include /etc/nginx/conf.d/*.conf; 
include /etc/nginx/sites-enabled/*; 
} 

здесь по умолчанию файл:

server { 
large_client_header_buffers 4 128k; 
listen XX:XX:XX:XX:80; 

set $root_path '/var/www/web/public/'; 

root $root_path; 
index index.php; 

server_name XX:XX:XX:XX; 

location/{ 
    # First attempt to serve request as file, then 
    # as directory, then fall back to displaying a 404. 
    try_files $uri $uri/ /index.php?$query_string; 
} 

location ~ \.php$ { 
    include snippets/fastcgi-php.conf; 
    fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include fastcgi_params; 
    fastcgi_read_timeout 14400; 

    proxy_set_header Connection ""; 
    proxy_http_version 1.1; 
} 

location /status { 
     stub_status on; 
     access_log off; 
     allow XX:XX:XX:XX; 
     deny all; 
} 

location ~* ^/(css|img|js|flv|swf|download)/(.+)$ { 
    root $root_path; 
} 

# deny access to .htaccess files, if Apache's document root 
# concurs with nginx's one 
location ~ /\.ht { 
    deny all; 
} 
} 

И самое главное, у меня хрон рабочих мест я бегу , например:

* * * * * sleep 5; curl --request GET http://XX:XX:XX:XX/queue/fire > /dev/null 2>&1 
* * * * * sleep 10; curl --request GET http://XX:XX:XX:XX/queue/fire > /dev/null 2>&1 
* * * * * sleep 15; curl --request GET http://XX:XX:XX:XX/queue/fire > /dev/null 2>&1 
* * * * * sleep 20; curl --request GET http://XX:XX:XX:XX/queue/fire > /dev/null 2>&1 
* * * * * sleep 25; curl --request GET http://XX:XX:XX:XX/queue/fire > /dev/null 2>&1 
* * * * * sleep 30; curl --request GET http://XX:XX:XX:XX/queue/fire > /dev/null 2>&1 
* * * * * sleep 35; curl --request GET http://XX:XX:XX:XX/queue/fire > /dev/null 2>&1 
* * * * * sleep 40; curl --request GET http://XX:XX:XX:XX/queue/fire > /dev/null 2>&1 
* * * * * sleep 45; curl --request GET http://XX:XX:XX:XX/queue/fire > /dev/null 2>&1 
* * * * * sleep 50; curl --request GET http://XX:XX:XX:XX/queue/fire > /dev/null 2>&1 

т.д.

UPDATE:

PHP FPM Статус

* php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager 
    Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor preset: enabled) 
    Active: active (running) since Fri 2017-01-13 10:46:41 CET; 3 days ago 
    Process: 1439 ExecStartPre=/usr/lib/php/php7.0-fpm-checkconf (code=exited, status=0/SUCCESS) 
Main PID: 1662 (php-fpm7.0) 
    Status: "Processes active: 0, idle: 25, Requests: 164215, slow: 0, Traffic: 0req/sec" 
    Tasks: 26 
    Memory: 377.3M 
     CPU: 5h 57min 32.279s 
    CGroup: /system.slice/php7.0-fpm.service 
      |- 1662 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)      
      |- 1752 php-fpm: pool www                
      |- 8751 php-fpm: pool www                
      |-12078 php-fpm: pool www                
      |-14053 php-fpm: pool www                
      |-14338 php-fpm: pool www                
      |-14639 php-fpm: pool www                
      |-14763 php-fpm: pool www                
      |-16188 php-fpm: pool www                
      |-16212 php-fpm: pool www                
      |-16900 php-fpm: pool www                
      |-17620 php-fpm: pool www                
      |-17621 php-fpm: pool www                
      |-17766 php-fpm: pool www                
      |-18802 php-fpm: pool www                
      |-19084 php-fpm: pool www                
      |-22064 php-fpm: pool www                
      |-24245 php-fpm: pool www                
      |-24690 php-fpm: pool www                
      |-25120 php-fpm: pool www                
      |-27714 php-fpm: pool www                
      |-29415 php-fpm: pool www                
      |-30182 php-fpm: pool www                
      |-30391 php-fpm: pool www                
      |-32053 php-fpm: pool www                
      `-32358 php-fpm: pool www                

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. 

ответ

1

Я хотел бы проверить PHP журналы FPM. Возможно, закончились процессы php fpm.

+0

спасибо! просто проверил его и у меня появилось много предупреждений. «ПРЕДУПРЕЖДЕНИЕ: сервер [pool www] достиг настройки pm.max_children (5), рассмотреть вопрос о его повышении.« Я забыл о настройках по умолчанию, я собираюсь увеличить его и посмотреть, помогает ли он. – Maciej

+0

это не помогло;/Я изменил значение с по умолчанию на: pm.max_children = 40 и pm.start_servers = 15 и pm.min_spare_servers = 15 и pm.max_spare_servers = 25 и pm.max_requests = 500'. Через 2 дня у меня была такая же проблема, больше ошибок в отношении детей и никаких ошибок от nginx;/любые идеи? – Maciej

+1

Это единственное, что я могу думать о том, что это приведет к поведению. Я предлагаю включить журналы доступа и ошибок для NGINX и php-fpm и отслеживать неудавшиеся запросы. –