Чи є більше ядер процесора кращою для запуску веб-сервера?


5

Я читав про те, як потоки користувачів зіставляються з потоками ядра Вікіпедія . З цієї статті я розумію, що FreeBSD використовує потокові версії рівня ядра 1: 1.

Отже, кожен потік користувача, створений програмою, відображається в потоці ядра. Якщо я припускаю, що будую веб-сервер, який буде обробляти кожен новий запит у потоці, і я працюю на FreeBSD, збільшується кількість ядер, що покращує загальну продуктивність програми?

Я прочитав це питання Ядро ЦП: Чим більше, тим краще? , але я хочу, щоб на сферу відповідей вплинуло відображення 1: 1 між потоками користувачів і ядра.


2
Більше ядер допоможе з більшою кількістю обробки. Необхідно дослідити, чи допоможе ваш веб-сервер - це може не допомогти, якщо сервер обмежений пам'яттю, диском або компонентами.
ernie

Відповіді:


5

Коротка відповідь - так.

Довга відповідь .... має більше ядра процесора означає більше потужності обробки. У випадку з веб-додатком PHP / Ruby / Python / etc., це означає більше ресурсів для обробки одночасних з'єднань. Наявність більшої кількості ядер дійсно відрізняється у випадку важкого навантаження.

Моя особиста думка полягає в тому, що у випадку вибору між більшою обчислювальною потужністю та більшою оперативною пам'яттю, я вибираю більше оперативної пам'яті в більшості випадків. За допомогою оперативної пам'яті можна зменшити вузьке місце, в якому знаходиться диск I / O.

За допомогою таких систем кешу, як PHP APC , Лак , і Настройка MySQL (кеш таблиці, кеш запитів тощо ...), ви можете значно підвищити продуктивність веб-сайту, не потребуючи більшої потужності процесора для створення вмісту.

Якщо ваш сайт може бути кешований, зробіть цей вибір. Просто збільшення кількості процесорного ядра є довгостроковим вибором.


1

Так.

Сучасне програмне забезпечення веб-сервера використовує окремий процес або потік для кожного комп'ютера, що підключається до сервера. Крім того, серверне програмне забезпечення, таке як MySQL або PHP, також запускається в окремих процесах або потоках для кожного користувача, якому він потрібен, тому наявність більшої кількості ядер завжди допомагає.

Звичайно, у більш інтенсивних середовищах продуктивність диска, пам'ять або пропускна здатність мережі можуть стати вузькими місцями. Більше пам'яті дозволяє більше читати кешування, що зменшить доступ до уповільненого зберігання на диску. Як випливає з Biapy, якщо ви маєте справу з великою кількістю запитів в секунду, ви повинні розглянути спеціальне програмне кешування, наприклад, Varnish, що значно зменшить навантаження на систему.


1

Як завжди, відповідь буде, що це залежить.

Наприклад, nginx веб-сервер виконує дуже добре , навіть не використовуючи нитки. Натомість використовується архітектура, керована подіями. Він може і не використовує кілька робочих процесів, тому він може використовувати кілька ядер.

Як ви можете бачити в пов'язаних вимірюваннях продуктивності, потоковий веб-сервер Apache створює більше потоків і використовує більше пам'яті, якщо кількість одночасних з'єднань зростає. Обсяг використання пам'яті nginx залишається досить постійним. А в кількості поданих запитів на секунду, nginx перевищує apache на великій відстані.

Тому теми не завжди є найкращим рішенням.

Продуктивність залежить також від місця розташування даних. Якщо він припаркований на жорсткому диску, доступ буде повільним порівняно з тим, коли він знаходиться в оперативній пам'яті, що в свою чергу набагато повільніше, ніж кеш-процесор. Якщо ви хочете прискорити роботу веб-сервера, розгляньте можливість використання акселератора лак . Розглянемо читання Ця стаття первинним автором лаку про продуктивність у веб-обслуговуванні. Повідомлення тут, що ви повинні використання вбудовані механізми керування операційної системи і що ви не повинні намагатися робити ту ж саму роботу самостійно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.