У меня есть веб-сайт для обмена файлами, и мои файлы размещены на сервере с такими системными характеристиками:
32GB RAM
12x3TB
2x Intel Quad Core E5620
У меня есть файлы на этом сервере размером до 4 ГБ для каждого файла. 446 ГБ заполнено (/ 36 ТБ)
[root@hosted-by ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 50G 2.7G 44G 6% /
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda1 97M 57M 36M 62% /boot
/dev/mapper/VolGroup01-LogVol00
33T 494G 33T 2% /home
И взгляни на это:
Почему wa%
так высоко? (Я думаю, что именно поэтому сервер работает так медленно)
Как настраиваются диски на сервере, я бы предположил, что вы не используете какую-либо реализацию RAID для ускорения скорости чтения / записи диска (поскольку использование диска показывает 33 ТБ для группы LVM), и это ваша проблема.
Поскольку предыдущие ответы верны, 'wa' означает ожидание дискового ввода-вывода, которое чрезвычайно велико, практически блокируя ваш сервер и переводя любой процесс, который зависит от дискового ввода-вывода, в состояние непрерывного сна (процессы, отмеченные как "D" в вверху) - проблема в том, что вы не можете очистить эти процессы, отправив им сигнал SIGKILL, они не ответят, пока не получат то, что хотели с диска, а затем они выйдут.
Процессы в состоянии D можно очистить либо уменьшив время ожидания ввода-вывода на диске, которое очистит процессы, либо перезагрузит сервер, а перезагрузка - это последнее, что вы хотите сделать, если вы столкнетесь с необходимостью проверки файловой системы (fsck). Для обработки 33 ТБ данных на медленных дисках потребуется много времени, и даже при настройке RAID требуется слишком много времени.
Подумайте о том, чтобы получить сервер с качественной картой RAID и настроить свои диски в RAID6, если вы собираетесь использовать большое количество дисков на сервер, таким образом вы получите лучшую скорость и избыточность в случае отказа диска, поскольку RAID6 может выдержать два вышедших из строя HDD, где другая конфигурация RAID может выдержать 1 отказавший диск.
Также, когда у вас есть новая настройка сервера, изучите мониторинг состояния RAID-массива, einarc может помочь определить RAID-массив и отобразить, есть ли какие-либо проблемы с вашим RAID-массивом. С настройкой RAID вы пожертвуете небольшим объемом дискового пространства, но вы получите лучшую скорость чтения / записи по сравнению с текущей настройкой.
Если у вас есть 12 дисков по 3 ТБ и вы поместите их в конфигурацию RAID 6, формула для расчета имеющегося у вас дискового пространства будет (N – 2) x (Smallest HDD size)
, поэтому на 12 дисках по 3 ТБ у вас будет 30 ТБ свободного дискового пространства:
(12 - 2) x 3TB = 30TB
Также еще одно предложение: если вы будете использовать этот сервер только для обслуживания файлов, я бы предложил переключиться на nginx, который окажется полезным в использовании ресурсов и производительности, которую вы получите от него, по сравнению с сервером Apache, который хорош для определенного уровень. Но это зависит от настроек вашей системы.
'wa' означает ожидание, что означает, что ваши ЦП ожидают завершения некоторых операций ввода-вывода. Скорее всего проблема связана с чтением / записью файлов с / на диски. Вам следует подумать о настройке вашей системы с учетом потребностей операций ввода-вывода жесткого диска.
В какой-то момент вы можете захотеть распределить место на жестком диске на нескольких машинах (с более низкими характеристиками процессора).
Другая идея - использовать SSD для кэширования (особенно если вы можете предсказать использование одних файлов по сравнению с другими). Это потребует дополнительной разработки, но это может быть самое дешевое решение.
При первом чтении кажется, что ваша подсистема ввода-вывода не соответствует поставленной задаче. Я верю, что в теории очередей есть что-то вроде того, что когда ваша загрузка достигнет 100%, время обслуживания будет стремиться к бесконечности. На самом деле это тоже довольно неожиданная вещь: при использовании около 80% время обслуживания значительно увеличится.
Итак, еще несколько инструментов, которые стоит проверить:
Я действительно отмечаю, что у вас, похоже, довольно мало памяти, доступной для дискового / блочного кеша Linux, хотя добавление ОЗУ пока только помогает вам, это здорово, если вы можете поместить свой горячий набор в память или, по крайней мере, на большой часть вашего горячего набора. На самом деле вы также можете использовать свопинг, что тоже нехорошо, и в зависимости от того, где находится ваш своп, он может способствовать увеличению нагрузки ввода-вывода.
Хотя, если вы действительно используете (или близки) к 100% -ному использованию пропускной способности ввода-вывода вашей дисковой системы, вероятно, пришло время переосмыслить, как вы делаете свое хранилище, сначала сядьте и действительно посмотрите, что такое ввод-вывод. требования к вашей пользовательской нагрузке будут (количество операций ввода-вывода в секунду, большое количество операций чтения и / или записи, это произвольный или последовательный доступ, размер вашего горячего набора и т. д., какова будет общая требуемая пропускная способность и т. д.), и разработать решение (сервер / хранилище), которое будет соответствовать указанным требованиям.