Колко едновременни потребители издържа един VPS: да направим сметката

Всичко започва с един въпрос: какво правят тези потребители? Хиляда души, влезли в едно приложение, не правят хиляда заявки в секунда, а страница, обслужена от кеш, струва сто пъти по-малко от изчислена страница. Това ръководство превръща потребителите в заявки, заявките в процесор и памет, след което показва как да проверите всичко с тест за натоварване.

Публикувано на 26 октомври 2026 г. Автор: Време за четене: 9 минути

Всички ръководства

Накратко

  1. Влезлите потребители не са едновременни заявки: активен потребител изпраща заявка приблизително на всеки 10 до 30 секунди.
  2. Заявки в обработка = заявки в секунда × продължителност на една заявка (закон на Литъл). Именно този брой трябва да издържи сървърът.
  3. Един vCPU обслужва най-много 1 000 ÷ (милисекунди изчисление на заявка) заявки в секунда: 20 ms изчисление, 50 заявки в секунда.
  4. Паметта ограничава броя на worker процесите: всеки процес на PHP или Python заема 40 до 200 MB.
  5. Кешът променя всичко: страница, обслужена от кеш, струва по-малко от милисекунда, а изчислена WordPress страница от 100 до 300.
  6. Измерете с тест за натоварване (k6, wrk) върху копие на приложението, като увеличавате натоварването на стъпки.

От потребители към заявки

„Едновременни потребители“ означава три различни величини в зависимост от това кой говори:

От едната величина към другата се преминава чрез закона на Литъл: броят на заявките в обработка е равен на пропускателната способност, в заявки в секунда, умножена по средната продължителност на една заявка.

Пример. 600 потребители, активни едновременно, всеки от които задейства заявка на всеки 20 секунди, правят 30 заявки в секунда. Ако всяка заявка трае 100 ms, сървърът има средно само 3 заявки в обработка. Предизвикателството е другаде: в пиковете и в бавните заявки.

Колко издържа един vCPU

Една заявка заема процесора, докато трае изчислението ѝ: изпълнение на кода, заявки към базата, изграждане на отговора. Затова един vCPU обработва най-много 1 000 ÷ t заявки в секунда, където t е времето за изчисление на една заявка в милисекунди. Времето, прекарано в чакане (на външно API, на диска), не заема процесора, но заема worker.

Вид заявкаТипично време за изчислениеНа vCPU, порядък
Статичен файл или страница, обслужена от кешПод 1 msНяколко хиляди заявки в секунда
WordPress страница, обслужена от кеш на страниците1 до 5 msНяколкостотин в секунда
JSON API (Node.js, Go, FastAPI) с индексирана SQL заявка5 до 20 ms50 до 200 в секунда
WordPress или Laravel страница, изчислявана при всяко посещение100 до 300 ms3 до 10 в секунда
Отчет, експорт, генериране на PDF500 ms до няколко секундиПод 2 в секунда

С тези порядъци 30 API заявки в секунда при 10 ms изчисление заемат 30 % от един-единствен vCPU. Същите 30 заявки в секунда към WordPress страници без кеш изискват 3 до 9 vCPU. Кешът на страниците служи точно за това: да премести една страница от четвъртия ред на таблицата към втория.

Колко издържа паметта

Всяка заявка в обработка се поема от worker, а worker процесите заемат памет, независимо дали работят или не. Често паметта, повече от процесора, определя броя на заявките, обработвани паралелно:

Постоянните връзки (websockets, известия в реално време) се броят отделно: отворени непрекъснато, те заемат малко процесор и по няколко десетки килобайта памет всяка. Един Node.js сървър държи хиляди от тях в няколкостотин MB.

Истинските тесни места

В реално приложение сървърът рядко се насища там, където го очаквате. Най-честите причини, в реда, в който да ги търсите:

  1. Бавна SQL заявка: липсващ индекс превръща заявка от 2 ms в заявка от 2 секунди, която задържа worker и връзка. pg_stat_statements в PostgreSQL или журналът на бавните заявки в MySQL я посочва.
  2. Каскадните заявки (проблемът N+1): страница, която изпраща по една заявка за всеки показан ред, изпраща стотици.
  3. Синхронно външно извикване: API за плащания или за AI, което отговаря за 3 секунди, блокира синхронен worker за 3 секунди.
  4. Тежки обработки в самата заявка: изпращане на имейли, преоразмеряване на изображения, генериране на PDF, които е по-добре да преместите в опашка от задачи.
  5. Липсата на кеш: страниците, еднакви за всички посетители, се обслужват от кеш, а статичните файлове от уеб сървъра.

Проверката: тестът за натоварване

Порядъците дават първоначален размер; тестът за натоварване дава истинския. Принципът: симулирате все повече потребители върху копие на приложението и отбелязвате момента, в който времето за отговор рязко се влошава.

Терминал: 50 връзки за 30 секунди, с wrk
wrk -t2 -c50 -d30s --latency https://preprod.vashiyat-sayt.com/

За цялостен път на потребителя (вход, разглеждане, търсене) k6 описва сценарий на JavaScript и увеличава натоварването на стъпки:

Скрипт за k6 (test.js), стартиран с: k6 run test.js
import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
  stages: [
    { duration: '2m', target: 100 },
    { duration: '5m', target: 100 },
    { duration: '2m', target: 300 },
    { duration: '5m', target: 300 },
    { duration: '2m', target: 0 },
  ],
  thresholds: { http_req_duration: ['p(95)<500'] },
};

export default function () {
  http.get('https://preprod.vashiyat-sayt.com/');
  sleep(15);
}

Когато натоварването расте

Редът, който струва най-малко и носи най-много:

  1. Кеширайте каквото може да се кешира (страници, фрагменти, резултати от заявки) и коригирайте бавните заявки.
  2. Настройте броя на worker процесите според наличната памет и процесор.
  3. Преминете към по-голям размер: повече vCPU и памет, без да променяте нищо в приложението.
  4. Преместете базата данни на собствен сървър.
  5. Разпределете приложението на няколко сървъра зад балансьор на натоварването.

Първите три стъпки покриват огромното мнозинство от бизнес приложенията, сайтовете и API: няколкостотин потребители, активни едновременно, се обслужват от един добре настроен сървър.

Сървър, който расте заедно с потребителите ви

VPS Pro се предлага в шест размера, на процесори Intel Xeon, ECC памет и NVMe SSD в огледален режим, и преминава към по-голям размер по всяко време, без преинсталиране. Цялостната поддръжка е включена: кажете ни колко потребители очаквате при старта и след година и ще ви препоръчаме размера; а когато някоя страница се забави, поставяме диагноза и ви казваме какво да направите, от системата до кода на вашето приложение.

Разгледайте VPS Pro

Често задавани въпроси

Колко потребители може да обслужва VPS с 2 vCPU и 4 GB?

За API или приложение, чиито заявки изискват 10 до 20 ms изчисление, няколкостотин потребители, активни едновременно. За WordPress сайт без кеш на страниците около сто. Разликата идва от времето за изчисление на всяка заявка и от кеша, затова си струва да направите тест за натоварване.

Колко посетители на ден може да приеме един VPS?

Броят посетители на ден казва малко: важен е пикът. За да преминете от едното към другото, разделете посещенията за деня на часовете активност, умножете по разгледаните страници на посещение, след това по коефициент на пика от 3 до 5. 10 000 посещения за 10 часа, по 4 страници всяко, дават средно около 1 страница в секунда и 3 до 5 в пика.

Как да разбера дали сървърът ми е претоварен?

Три признака: времето за отговор расте заедно с трафика, процесорът остава над 80 % в пиковите часове или наличната памет пада близо до нула. Тогава журналите на уеб сървъра показват грешки 502 или 504, а заявките чакат свободен worker.

Променят ли websockets сметката?

Да: една websocket връзка остава постоянно отворена. Тя консумира малко процесор и няколко десетки килобайта памет. Един Node.js сървър държи хиляди такива връзки; процесора натоварват по-скоро изпратените съобщения, отколкото отворените връзки.

Свържете се с нас