Евгений Крупченко

Евгений Крупченко
Рейтинг
178
Регистрация
27.09.2003
Интересы
хостинг без тормозов

замедление как может быть связано с базой (например сессии сохраняются в базу, но не удаляются или еще какой-то мусор там складируется бесконечно), так может и не быть.

нередко у народа скрипты что-то запрашивают из внешних источников - вот вам замедляющий фактор, от которого ваш сайт будет рандомно больше/меньше тормозить.

ну или кто знает что там происходит, надо только смотреть...


сами sleep'ы ничего не замедлеют. как вам правильно сказали, скрипты открывают соединение, что-то делают с базой и потом болт забивают на закрытие. так оно и висит.

если мазолит глаза, добавьте в конфиг mysql например wait_timeout=1 и тогда mysql сама будет обрывать все соединения, которые секунду бездействуют.

но тогда логи начнут изобиловать сообщениями типа "[Warning] Aborted connection to db .....  (Got timeout reading communication packets)".


возможно количество sleep'ов это просто результат того что скрипты стали исполняться как говорите в 2-3 раза дольше. т.е. они и раньше были, но теперь просто больше стало т.к. больше времени проходит от запуска до завершения скрипта. возможно к базе подключается вначале, а закрывает соединение в конце. и вот эти несколько секунд коннект висит в статусе sleep.


в общем сперва надо решить проблему с медленным сайтом, а sleep'ы потом возможно сами и уйдут.

кто тут хотел сервер домой?

налетай:

https://www.avito.ru/sevastopol/nastolnye_kompyutery/e3-1265lv2_x9scm-f_32gb_ddr3_ecc_b.p._radiator_1963063686

около идеальный вариант. не совсем дно по мощности/скорости, при этом не сильно большой нагрев и энергопотребление. памяти много.

осталось вкинуть в картонную коробку и подвести пару провайдеров к нему :)

мне бухгалтер сказала платить только за июнь.
что было и сделано :)
но лучше такие вещи уточнять в самой налоговой или у к ней приближенных. а не по форумам.
потом вдруг что, будете отвечать - а мне такой-то ник на форуме таком-то сказал...

какой ответ вы тут хотите получить?

никто тут не видит что вы там видите.

можно было хоть дать ссылку на свой секретный сайт...


для начала узнайте время ожидания ответа.

в firefox нажать ctrl+i и дальше вот тут:

уж не знаю как в хроме, но тоже должно быть что-то подобное.

правильно сделанный сайт тут показывает цифру примерно равную пингу от вас к серверу.

если видим пол секунды и выше - все очень плохо.

что-либо еще советовать не видя пациента бессмысленно.

клиенту передано 251 - после 200 (ответ ОК)

а что в конце за цифры - намного эффективнее было бы спросить у них самих, а не тут.

почему многие так боятся поддержку хостинга, она для того и существует. и лучше них никто не ответит.

кэш. вся суть в кэшировании.

да, dnsmasq просто форвардит на те же 8.8.8.8 и 1.1.1.1, но при этом кэширует.

да, по времени там вроде разница мизер, но если помножить это на количество запросов, то получается уже заметно на глаз.

вот реальный пример. только что проверил:


видим что кэшированный запрос от локалхоста в 3 раза быстрее cloudflare и в 4 раза быстрее гугла.

ну это частный случай конкретно этого сервера. у других могут быть другие цифры.

днс сервера такие стоят:


т.е. первым локальный dnsmasq (который эту строку игнорирует при своей работе и обращается лишь к двум оставшимся)

и сейчас я делаю reload nginx'а с двумя сотнями сайтов за вот столько:


но как только в resolv.conf комментирую первую строчку с 127.0.0.1 и это же самое действие проходит уже за вот столько:


а когда подтупливали те внешние dns сервера все было еще сильно хуже и даже просто открывались https сайты с тормозами заметными на глаз.

стоило мне закомментировать ssl_stapling - все приходило в норму.

поставил dnsmasq - тоже порядок.


может я конечно чего не до конца понимаю, но факт в том что с тех пор как поставил кэширующий dnsmasq проблем больше не замечал. да и тот же reload (который нужен относительно часто когда добавляются/удаляются сайты) проходит почти незаметно. периодические ауты по несколько секунд никому не нужны. но и отключать ssl_stapling, теряя плюсы в ssllabs не охота.

возможно многие такие моменты не замечают т.к. проблема проявляется лишь при большом числе сайтов. если их там 3-5 шт. то конечно без разницы.

согласен, что это больше плацебо и ни на что особо не влияет, можно смело оставлять по-умолчанию. но вопрос же был про "оптимизацию". собственно вот она и есть. добавляем/правим фичи, понимая какие будут последствия, плюсы/минусы.


переход обратно с https на http обычно никому и не нужен, потому и говорю - да, ставим заголовок HSTS.

но просто мало ли, вдруг возникнет ситуация когда понадобится и чтоб не бегать по форумным гадалкам спрашивая почему не работает, надо осознавать как это работает и когда что-то может не работать.

LEOnidUKG #:
У вас Openssl 1.1 установлен в системе?

даже если не установлен. можно отдельно собрать openssl 1.1 и собрать nginx, использующий именно этот openssl, а не системный.

хотя и в том что используется какая-то свежая ОС уже с openssl 1.1 тоже ничего необычного.

цель указана - оптимизация.

оптимизация это обычно означает какое-то улучшение или ускорение через убирание лишнего хлама.

но начинать надо с матчасти. понимать самостоятельно суть каждой настройки, а не просто копипастить что-то с форумов :)

по пунктам:

1) HSTS - да, но надо помнить о переходе обратном с https->http

да т.к. браузер в следующие заходы будет сразу обращаться куда надо, без лишнего обращения к http->редирект->https

2) tls 1.2 и 1.3 остальное отключено - да, но тоже надо помнить о древних клиентах.

3) ssl_stapling - да, но надо помнить о нюансе с dns и возможных тормозах из-за этого.

вот такие последовательности.

tls1.3 как nginx конфиге - AES256, потом CHACHA20

tls1.2 - как в openssl - AES128, AES256, CHACHA20

даже не спрашивайте почему так :)

довольно давно это настраивал. там все достаточно сложно замудрено.

но суть в том что надо во-первых требовать приоритета сервера и сервер чтоб в первым делом хотел один из AES'ов, лучше 128 т.к. он быстрей, а следующим CHACHA20 для недоклиентов.

весь остальной хлам просто отключаем.

уже не первый год включены лишь tls 1.2 и 1.3, остальное выключено.

крайне изредка кто-то под какой-нибудь winxp или ie древним замечает мол не открывается сайт и жалуется.

объясняю что да как. соглашаются что так пусть и остается.

пример сайта:

https://www.ssllabs.com/ssltest/analyze.html?d=vovk.com

ни одного "желтого", лишь кое-что красное из-за тех самых отключенных более старых протоколов.

все "зеленые полоски" можно довести до максимума, увеличив размеры ключей с 2048 до 4096

но это немного отразится на производительности. пока не помечает ssllabs желтым, пусть остается так.


Strict-Transport-Security тоже включен, но надо осознавать потенциальную проблему перехода обратно с https на http.

если к примеру вздумается и по http домен открыть, на который браузер уже заходил с таким заголовком, то ничего не получится. браузер будет упорно ломиться только на https сразу пока не наступит таймаут указанный в max-age

сбросить это можно, но не так просто как куки например.


по шифрам. у меня так:

ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE:+AES256:+CHACHA20:!AESCCM:!SHA384:!SHA256:!SHA:-3DES:!NULL:!RC4:!ARIA:!CAMELLIA';
т.е. сообщаем о приоритете шифров сервера, а не клиента.

потом AES256 - как среднее между менее быстрым AES384 и более быстрым, но менее безопасным (или ssllabs его желтым отмечает, уж не помню) AES128.

CHACHA20  - для клиентов, чьи процессоры не имеют аппаратного AES.

остальное отключено (! знак)


помимо этого, nginx использует openssl, в которой тоже можно настроить шифры, протоколы и т.д.

у меня допустим так сделано:

в файле openssl.cnf добавлено:

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.2
Ciphersuites = TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
CipherString = ECDHE:+AES256:+CHACHA20:!AESCCM:!SHA384:!SHA256:!SHA:-3DES:!NULL:!RC4:!ARIA:!CAMELLIA
Options = ServerPreference,PrioritizeChaCha

т.е.  тоже самое, протоколы только tls 1.2 и 1.3

те же шифры AES256 и CHACHA20, но еще доступен также AES128 (уж не вспомню так с ходу почему и зачем)

PrioritizeChaCha  - там как-то хитро помнится... клиенты, которые могут AES, все равно будут AES256 использовать. а это лишь для тех кто не может.


это тоже включено у меня:

ssl_stapling on;
ssl_stapling_verify on;
но!  не так давно из-за этого возникала одна проблема, которую не так просто было обнаружить.

суть вроде в том была, что при этом еще происходит обращение к dns серверам (из /etc/resolv.conf или там же в nginx конфиге resolver и resolver_timeout)

так вот однажды заметил что https сайты как-то тормознуто отвечают. начал ковырять, при перезагрузке nginx вообще страшно медленно это делал.

оказалось что по какой-то причине временно была плохая связь с гугловскими днс (8.8.8.8) или они сами по себе подтормаживали.

и при перезапуске nginx с парой сотен доменов с сертификатами и ssl_stapling'ом, происходило множество обращений к dns и отсюда тормоза.

в итоге решил дополнительной установкой локального кэширующего dnsmasq и указанием его как единственного в системе.

после чего nginx стал перегружаться моментом и все тормоза пропали.

вот такая история, о которой надо помнить, используя ssl_stapling

Всего: 622