VELIK505
@VELIK505
Руководитель департамента profitcentr.com

Временами долгий отклик от поддомена. nginx поддупливает?

Вечер добрый.
Есть поддомен static.mysite.com
временами от него долгий отклик. На нём лежат аватарки и прочие картинки.
Но нет на сайте mysite.com бывает идёт долгое ожидание от static.mysite.com (прогрузки img)
Я сначала думал надо проксить как с apache делали. Но даже если залить картинку 16х16px весом 5кб на static.mysite.com и перейти в браузере static.mysite.com/image16.png и 10 раз нажать f5 в 7 случаях она отобразиться сразу а в 3х будет долго прогружаться (ожидание) как буд то чёто затупливает=(

nginx.conf:

user apache;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
timer_resolution 100ms; 
worker_rlimit_nofile 131072;
worker_processes 8;
events {
    worker_connections  65536;
    multi_accept        on;
    use                 epoll;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;
sendfile        on;
tcp_nopush     on;
tcp_nodelay on;
keepalive_timeout  65;
types_hash_max_size 2048;
server_tokens off;
reset_timedout_connection on; 
  
gzip on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain application/xml application/x-javascript text/javascript text/css text/json;
gzip_disable "msie6";
gzip_comp_level 3;

include /etc/nginx/conf.d/*.conf;
include /usr/local/ispmgr/etc/nginx.domain;
	client_max_body_size 16M;
        client_body_buffer_size 128k; 
	log_format isp '$bytes_sent $request_length';

}


static.mysite.com.conf:

server {
	server_name static.mysite.com;
	root /var/www/user/data/www/static.mysite.com;
	listen xxx.xxx.xxx.xx;
	charset WINDOWS-1251;
	#disable_symlinks if_not_owner from=$root_path;
	set $root_path /var/www/user/data/www/static.mysite.com;
	error_page 403 400 404 = http://mysite.com/404.php;

location ~* ^.+\.(jpg|jpeg|gif|png|ico|svg|js|css|txt|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
                   #access_log off;
                   expires 7d;
}
}


default.conf:

server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
        location /nginx_status {
                stub_status on;
                access_log   off;
                allow 127.0.0.1;
                deny all;
        }
}


ping в норме:

C:\Users\Велик505>ping static.mysite.com

Обмен пакетами с static.mysite.com [xxx.xxx.xxx.xx] с 32 байтами данных:
Ответ от xxx.xxx.xxx.xx: число байт=32 время=123мс TTL=46
Ответ от xxx.xxx.xxx.xx: число байт=32 время=117мс TTL=46
Ответ от xxx.xxx.xxx.xx: число байт=32 время=117мс TTL=46
Ответ от xxx.xxx.xxx.xx: число байт=32 время=117мс TTL=46

Статистика Ping для xxx.xxx.xxx.xx:
Пакетов: отправлено = 4, получено = 4, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 117мсек, Максимальное = 123 мсек, Среднее = 118 мсек


В логах nginx единственное что вижу что мой крон скрипт не может выполниться (wget) по http протоколу

2015/12/12 12:01:01 [error] 25722#0: *39936015 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxx.xxx.xxx.xx, server: mysite.com, request: "GET /cron_desk/cron_optimizetable.php?key=dsadsa432rewrew34 HTTP/1.0", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock", host: "mysite.com"

Хотя там идёт 5 таблиц optimize 5 сек перерыв следующие 5 таблиц optimize и тд.
$i = 0;
$table_r = mysql_query("SHOW TABLES FROM `".$bd_base."`");
while ($tb_r=mysql_fetch_row($table_r)){$i++;
  $status = mysql_query("OPTIMIZE TABLE `".trim($tb_r[0])."`");
  if($i == 5){sleep(5);$i=0;}


Ну вообщем да минуту выходит на задание optimize all tables. Как исправить эту ошибку чтобы времени хватало? и поправить отклик?

Ну крон я тут не прав конечно его лучше я на интерпретатор пыха кину.
Ну а что делать с подтупливанием поддомена?
ping -l 1400 -t static.mysite.com среднее 120
я ещё раз говорю даже не выводом на основном домене а просто перейти на статический домен картинку 5кб static.mysite.com/kartinka.png может быть долгий отклик секунд 6-7 как буд-то щас nginx уйдёт в 502ую. (нагрузки в этот момент на него нет).

с основным доменом такой проблемы нет хотя они на одном айпи и серваке и ping от основного домена такой же как и от поддомена соответственно но он не тупит а поддомен тупит.
Забыл отписаться давно уже решел. В коменте под спойлером решений.
  • Вопрос задан
  • 837 просмотров
Решения вопроса 1
VELIK505
@VELIK505 Автор вопроса
Руководитель департамента profitcentr.com
Забыл отписаться. Разрулил.
Ситуация была такая в кратце было много js скриптов исполняющихся по SetInterval-у каждые 10-11сек которые убивали хром при большенстве открытых вкладках начинала тупить вся статика в хроме и надпись ожидание доступного сокета. Решение замена сетинтварала на сеттаймаут. Сетинтервал ломает клиентский браузерах при кучи скриптов. Но лучше сразу на веб-сокеты
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
FuN_ViT
@FuN_ViT
веб-разработчик
nginx на windows? вроде как есть подводные камни с этим.

Попробуйте

worker_processes 1;

или закомментить

timer_resolution 100ms;
Ответ написан
Комментировать
@xtreme
Снимаю порчу по SSH :)
1. Если измеряете время прохождения пакета с помощью ping - приблизьте размер пакета к реальному в 1500 байт и не надейтесь на 4 пинга. Потому как мелкими пакетами в 32 или 64 байта сложно заметить проблемы в сети.
ping -l 1400 -t static.mysite.com
2. Я наших вебников когда-то шваброй гонял за выполнение крона веб-запросом к PHP. Что мешает вписать в кронтаб выполнение любой команды без дергания веб-сервера? Тот же PHP спокойно может выполняться из шелла. К тому же, рано или поздно ваш урл кто-то найдет (тот же гугл или яндекс соберет данные и пойдет проверить, что там в урле) и тогда беды не миновать.
3. Можете пояснить, зачем делать по крону OPTIMIZE? И как часто вы его делаете?
4. Время отклика у вас большое. Сервер на другом континенте? Например, Вы - в Европе, а сервер - в Нью-Йорке. В таком случае нет ничего удивительного в подтупливании.
5. Сервер VDS? В этом случае тоже вполне возможны подтупливания, если используется HDD, либо при оверсейлинге у хостера.
6. Используете Chrome и в соседних вкладках также открыт ваш сайт? Учтите, что Chrome устанавливает не более 6 соединений к одному узлу.
Неплохо было бы посмотреть на вкладку Network в инспекторе браузера, чтобы увидеть тайминги при подтупливании.
7. Не перехватывается ли запрос картинки другим локейшном? Возможно, запрос промахивается и попадает в обработку, например, в PHP-скрипт, который уже сам забирает файл с диска и отдает nginx-у.
Ответ написан
@Nc_Soft
Вы страдаете херней
mysqlcheck -u root -pROOT_PASSWORD --auto-repair --optimize --all-databases
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы