- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Установил связку Nginx + php-fpm (через сокеты). Положил простенький файл на сервер (текстовый), сделал тестирование с другого сервера:
все отлично: все запросы успешные, скорость большая. Теперь тестирую РНР-файл с кодом:
Данный код выводит случайное число и больше ничего не делает.
Теперь все плохо: около половины запросов - failed, время тратится иногда много, но в основном, мало на обработку всех запросов.
В логе /var/log/nginx/error.log:
Гугл говорит, что нужно увеличить backlog в php-fpm (не помогло) или отказаться от сокетов. Я от них отказался, но ничего не поменялось: также примерно половина запросов отваливается. Лог ошибок Nginx почему-то пустой, хотя раньше была ошибка (не сохранил), типа fpm не отвечает.
Гуглил-гуглил, одни говорят, что это таймауты Nginx, другие что это не таймауты но что именно они не знают. Помогите советом люди добрые.
Отчет ab:
Nginx.conf
Натсройка Nginx для сайта
server {
server_name site.ru;
listen 1.1.1.1:80;
root /var/www/site.ru;
index index.php;
server_tokens off;
client_max_body_size 100m;
client_body_buffer_size 128k;
location ~* \.php$ {
send_timeout 100s;
proxy_connect_timeout 50s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
client_body_timeout 60s;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:8127;
fastcgi_connect_timeout 600s;
fastcgi_send_timeout 300s;
fastcgi_read_timeout 300s;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
www.conf для php-fpm
Интересно, если заменяю echo mt_rand(); на echo '123'; то ошибок нет или бывает 1-2 ошибки.
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 20
Поиграйтесь с этими настройками, в зависимости от мощности сервера и требований Ваших скриптов.
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 20
Поиграйтесь с этими настройками, в зависимости от мощности сервера и требований Ваших скриптов.
Поставил:
Ничего не изменилось, 40-60% запросов в fail, при этом время выполнения всех запросов в ab разное: примерно от 3 до 20 секунд.
Сервер относительно мощный, ресурсов не жалко, главное чтобы не было таких вот проблем.
shastox, возможно имеет смысл pm.start_servers, min_spare_servers поставить побольше.
5000 children ставить не рекомендую, пока Вы отчетливо не понимаете что делаете.
Читайте документацию на тему настройки системы под Ваши требования, либо обратитесь к тем, кто уже прочитал эту документацию (отдельный форум с отзывами чуть ниже этого)
С таким кодом длина ответа будет переменная и утилита ab всегда покажет ошибки.
Следует делать постоянное число знаков
2 jmk
Спасибо! Вы абсолютно правы! Вчера понял, что дело в mt_rand();, но не понимал, почему именно.
С таким кодом длина ответа будет переменная и утилита ab всегда покажет ошибки.
Следует делать постоянное число знаков
ab не боится переменной длины. И это не объясняет, почему nginx пишет в логи "Resource temporarily unavailable".
ab не боится переменной длины. И это не объясняет, почему nginx пишет в логи "Resource temporarily unavailable".
Тут еще стоит проверить и увеличить sysctl net.core.netdev_max_backlog, оно почти везде по дефолту 1000. Можно поднять до 2000. Думаю, что этот лимит на уровне программы и отдельных сокетов не регулируется.
Попробуйте покрутить конфиг сетевого стека ОС
sysctl net.core.***
Сервер при недостатке ресурсов может работать в двух режимах:
1) Быстро обработать часть запросов
2) Медленно обрабатывать все запросы
По умолчанию идет первый вариант