Я рекомендовал бы смотреть на SQL, который это производит. Можно просто распечатать str (запрос) для наблюдения его.
я не знаю об идеальном способе сделать его со стандартным SQL.
boost :: asio не так удобен для потоков, как можно было бы надеяться - существует большая блокировка кода epoll в boost / asio / detail / epoll_reactor.hpp, что означает, что только один поток может вызывать системный вызов epoll ядра одновременно. И для очень маленьких запросов это имеет значение (то есть вы увидите только примерно однопоточную производительность).
Обратите внимание, что это ограничение того, как boost :: asio использует возможности ядра Linux, не обязательно само ядро Linux . Системный вызов epoll действительно поддерживает несколько потоков при использовании событий, запускаемых фронтом, но получить его правильно (без чрезмерной блокировки) может быть довольно сложно.
Кстати, я проделал некоторую работу в этой области (объединяя полностью многопоточные пограничные функции). запустил цикл событий epoll с потоками / волокнами, запланированными пользователем) и сделал некоторый код доступным в рамках проекта nginetd .
Из ваших комментариев об использовании сети,
Похоже, у вас не так много движения в сети.
3 + 2,5 Мбайт / с
примерно 50 Мбит / с
балл-парк (по сравнению с вашим портом 1 Гбит / с).
Я бы сказал. у вас возникла одна из следующих двух проблем:
Просмотр примечаний cmeerw
и данных об использовании ЦП
(на холостом ходу 50% + 20% + 0% + 0%
)
скорее всего, это ограничение в реализации вашего сервера.
Я второй ответ cmeerw
(+1).
Поскольку вы используете EC2, все ставки выкл.
Попробуйте использовать реальное оборудование, и тогда вы сможете увидеть, что происходит. Попытка провести тестирование производительности на виртуальных машинах в принципе невозможно.
Я еще не понял, для чего полезен EC2, если кто-то узнает, дайте мне знать.
230 запросов в секунду кажется очень низким для таких простых асинхронных запросов. Таким образом, использование нескольких потоков, вероятно, является преждевременной оптимизацией - заставьте его работать правильно и настроить в одном потоке и посмотрите, нужны ли они вам. Простое избавление от ненужных блокировок может ускорить работу.
В этой статье есть некоторые подробности и обсуждение стратегий ввода-вывода для производительности в стиле веб-сервера примерно в 2003 году. Кто-нибудь получил что-нибудь более свежее?