- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всем привет! Есть веб-приложение написанное на Go, ничего сложного, пока это просто роутинг + шаблонизация.
Есть vagrant виртуалка с Ubuntu 16.04.1.
При нагрузочных тестах, вижу такую картину:
При этом, далее в логи начало сыпать о лимитах на max open files (soft - 1024)
Решил поднять это значение до 20 000, и проблему это вроде как решило.
После чего запустил siege -c 700 site.ru, и получил следующую картину:
Смущает вот что: load averege: 201.81
Т.е., если я правильно понимаю, в очереди на обработку находится 201 процесс? При этом самое большое время ответа сервера - 1.4 секунды. По загрузке видно, что ядра не загружены полностью (если я правильно понимаю) сам процесс жрет 131% (при нескольких ядрах это нормально?) и ядра находятся в idle что видно по скриншоту. Хотя процесс имеет D state.
Вопрос: почему такая маленькая производительность, и откуда взялся такой load average? В чем проблема?
Конфиг ПК:
i5 4690
SSD 850 EVO
16GB RAM (виртуалке доступно только 4GB)
Работает через Vagrant + VirtualBox
Само приложение:
Роутинг
Инклюдим шаблон
Передаем плейсхолдеры (затычки чтобы определить все ли данные передаются в представление)
Отправляем готовый шаблон на клиент
Баз данных/редисов/кеша пока нет.
Бери в расчет 100% на ядро. Т.е. 201% на 4 ядра - это 50% загрузки системы в среднем.
Stek, откуда тогда такой load average? 400% на 4 ядра - это ок. Но для load average должно быть максимум 4.00 (4 целых) но никак не 200.0 (200 целых). Заметил что сами процессы в D уходят, то есть ждут чтения с диска. Буду, наверное, кешировать сами файлы шаблонов в оперативку (200+ кбайт - смех по сравнению с блокировкой диска). Верно мыслю?
Смущает вот что: load averege: 201.81
А чего вы ожидали после 700 запросов в секунду?
Ну, к примеру:
1 Xeon Core
1GB
nginx (fastcgi_cache)
php7
Wordpress
выдает те же 700rps, при этом load average 0.7-0.8. Там также чтение файла с диска.
Ожидал что-то вроде 2-3к rps на моем конфиге, для полного счастья. Тут даже базы никакой нету. Просто берем файл, парсим его, втыкаем переменные в него, отдаем клиенту. Все.
Может проблема в виртуализации, я пробовал уже отключать synced_folders, говорят они замедляют работу, но на мой пример это никак не повлияло. Все равно долго как-то читает с диска. Буду либо в рам писать, либо искать причину такого поведения.
Там также чтение файла с диска.
Только для первого запроса, скорее всего.
Все равно долго как-то читает с диска.
Может производительность дисковой померить/сравнить?
Только для первого запроса, скорее всего.
Если я не ошибаюсь, то buff/cache в top как раз и показывает размер прокешированных файлов, к которым чаще всего обращаются. Почему тогда мой файл не кешируется на уровне ядра?
Может производительность дисковой померить/сравнить?
Запись
Домашний ПК + Vagrant
VPS ihor
Чтение
Домашний ПК
На домашнем почти в два раза выше скорость записи, чтение на VPS проверить не удалось.
Have you tried to run siege on different machine?
Have you tried to run siege on different machine?
Нет, но, кстати, вполне возможно что проблема в этом, так как ранее fsockopen ошибка была у siege. Попробую долбануть по VPSке чуть позже, посмотрим что покажет.
---------- Добавлено 28.11.2016 в 18:08 ----------
Короче говоря, протестил на VPS, долбил с домашнего ПК, при максимально возможном concurrency установленным в 1000, получил следующее:
А в siege получил следующее:
При этом Longest transaction чрезмерно высокий, хоть доступность и 100%. Изменил nofile до 40000 (на сервере он тоже был 1024). Увеличил trans/sec до 710 и Longest Transaction упало до 9~ секунд, при этом load average не поднялось выше 0.5, что для меня является приемлемым вариантом (никак не 200+ load average на четырех-то ядрах!) для VPS за 300 рублей. Всем спасибо. Думаю, что проблема решена, но если есть ещё предложения/догадки как ускорить - пишите.