Назад | Перейти на главную страницу

Отладка ограничения ввода-вывода

У меня есть ящик Fedora с некоторыми серьезными ограничениями ввода-вывода, которые я не знаю, как отлаживать.

Сервер оснащен RAID-контроллером Areca Technology Corp. ARC-1130 с 12 портами PCI-X - SATA с 12 дисками 7200 об / мин 1,5 ТБ и контроллером Gigabit Ethernet 88E8050 PCI-E ASF от Marvell Technology Group Ltd.

uname -a вывод: 2.6.32.11-99.fc12.x86_64 # 1 SMP Mon Apr 5 19:59:38 UTC 2010 x86_64 x86_64 x86_64 GNU / Linux

Сервер - это файловый сервер, на котором запущен Nginx с включенным модулем статуса заглушки, поэтому я могу видеть текущее количество подключений. Проблема возникает, когда у меня есть большое количество одновременных подключений в состоянии записи. Обычно около 350, в настоящий момент это 590, и сервер почти не работает и зависает на скорости 230 Мбит / с.

Если я запускаю stop и нажимаю 1, чтобы увидеть использование ядра ЦП, у меня все 4 ядра с ожиданием io около 99%, если я запускаю iotop, рабочие nginx - единственные процессы, производящие любую нагрузку на чтение, в настоящее время около 25 МБ / с. У меня каждый рабочий привязан к своему ядру.

Сначала я подумал, что это просто глючные диски. Но я проверил fscheck и smartmontools и ошибок не обнаружил. Я также провел тест iozone, результат которого вы можете увидеть здесь: http://www.pastie.org/951667.txt?key=fimcvljulnuqy2dcdxa

Кроме того, когда количество подключений невелико, у меня нет проблем с хорошей скоростью. Если я подключаюсь к локальной сети, скорость легко достигает 60 МБ / сек.

Прямо сейчас я просто попытался поместить файл в / dev / shm, затем я привязал к нему файл из общедоступного каталога и использовал wget по локальной сети и получил только 50 КБ / с.

Кроме того, если я попытаюсь cp / dev / shm / test / root / test, он быстро скопирует около 740 МБ, а затем ЗАМЕДЛЕННО. И снова iotop сообщает о 99% iowait.

Я не совсем уверен, как понять, в чем проблема. Это может быть естественное ограничение диска, но тогда файл из / dev / shm должен быть передан, поэтому кажется, что есть ограничение сети, но это нормально, когда соединений не так много. Возможно, это проблема стека TCP, но я понятия не имею, как это проверить.

Любые предложения о том, как продолжить отладку, будут очень приветствоваться. Если потребуется дополнительная информация, дайте мне знать, и я постараюсь ее получить.

Спасибо.

iotop удобен для просмотра того, какие процессы создают io, но я бы использовал sar для некоторых более конкретных чисел; sar -d 10 6, например, предоставит вам 10-секундные образцы за минутный период, которые дадут вам гораздо больше информации о производительности вашего диска и о том, есть ли у вас на самом деле узкие места (имейте в виду, что довольно маленькие await / svctime могут иметь значительное влияние по производительности - я видел всего лишь 20 мс svctimes, делающих сервер базы данных пригодным для использования, так как это 20 мс на ВГД БД пытался сделать).

Помимо этого, настройка sa1 sar (в /etc/cron.d/sysstat) для сбора чаще, чем каждые десять минут по умолчанию, и получение полного дампа статистики в сборках в периоды занятости (sar -A -s 09:00: 00 -e 10:00:00) также предоставит вам подробную информацию о производительности сети и упростит сопоставление поведения процессора, диска, сети и памяти для поиска сомнительных чисел.

(И да, сеть может отображаться как iowait)