Я неправильно припустив, що моє внутрішнє тестування АБ означає, що мій сервер може обробляти 1 к одночасність @ 3 к хітів за секунду.
Моя теорія на даний момент полягає в тому, що мережа є вузьким місцем. Сервер не може надсилати достатньо швидко даних.
Зовнішнє тестування від blitz.io при одночасності 1 к. Показує, що кількість моїх показів / скорочень скорочується на 180, тому що сторінки відповідають більше часу і довше, тому що сервер може повертати лише 180 за секунду.

Я подав порожній файл з nginx і порівняв його: він масштабує 1: 1 з одночасністю.

Тепер, щоб виключити IO / memcached вузькі місця (nginx зазвичай витягується з memcached), я обслуговую статичну версію кешованої сторінки з файлової системи.

Результати дуже схожі на мій оригінальний тест; Я обмежений приблизно в 180 об / хв.
Розділення HTML-сторінки навпіл дає мені подвоїти RPS, тому воно, безумовно, обмежене розміром сторінки.

Якщо я внутрішньо ApacheBench з локального сервера, я отримую стійкі результати в районі 4k RPS як на повній сторінці, так і на половинній сторінці, з високою швидкістю передачі. Швидкість передачі: 62586,14 [Кбайт / сек] отримано
Якщо я AB із зовнішнього сервера, я отримую близько 180RPS - те саме, що результати blitz.io.
Звідки я знаю, що це не навмисне придушення?
Якщо я орієнтирую з декількох зовнішніх серверів, усі результати стають поганими, що призводить до того, що проблема полягає у виїзному трафіку моїх серверів, а не проблемі зі швидкістю завантаження на моїх серверах бенчмаркінгу / blitz.io.
Тому я повернувся до свого висновку, що мій сервер не може надсилати дані досить швидко.
Я правий? Чи є інші способи інтерпретації цих даних? Чи є рішення / оптимізація встановити кілька серверів + балансування навантаження, яке може обслуговувати 180 хітів в секунду?
Я зовсім новачок в оптимізації сервера, тому я вдячний за будь-яке підтвердження інтерпретації цих даних.
Виїзний трафік
Ось додаткові відомості про вихідну пропускну здатність: мережевий графік показує максимальний вихід 16 Мбіт / с: 16 мегабіт в секунду. Це зовсім не схоже на багато.
Через пропозицію щодо дроселювання я переглянув це і виявив, що в ліноді є ковпачок на 50 Мбіт / с (мабуть, я навіть не близький до удару). У мене це було підвищено до 100 Мбіт / с.
Оскільки лінод обмежує мій трафік, і я навіть не потрапляю на нього, чи означає це, що мій сервер дійсно повинен бути здатний виводити до 100 Мбіт / с, але обмежений деяким іншим внутрішнім вузьким місцем? Я просто не розумію, як працюють такі масштабні мережі; чи можуть вони буквально надсилати дані так швидко, як вони можуть читати з жорсткого диска? Чи є мережа труб , що великий?

На закінчення
1: Виходячи з вищесказаного, я думаю, що я, безумовно, можу підвищити 180RPS, додавши балансир навантаження nginx поверх налаштування декількох серверів з декількома nginx рівно 180RPS на сервері позаду LB.
2: Якщо лінод має обмеження 50/100 Мбіт, яке я взагалі не вражаю, я повинен зробити щось, щоб досягти цієї межі при моєму встановленні одного сервера. Якщо я можу читати / передавати дані досить швидко локально, а лінод навіть турбує, щоб мати кришку 50 Мбіт / 100 Мбіт, має бути внутрішній вузький вузол, який не дозволяє мені вдаритись по тих кришках, які я не знаю, як виявити. Правильно?
Я усвідомлюю, що питання зараз величезне і розпливчасте, але я не впевнений, як його конденсувати. Будь-який внесок вдячний за будь-який зроблений нами висновок.


