Високий диск вводу / виводу при використанні кешу?


9

Кілька днів тому я помітив дискові очікування та падіння вводу / виводу диска (що було чудово). Потім я також помічаю, що мій кеш був заповнений (*) і роздроблений. Потім я промив кеш. Після цього затримка диска та активність диска підскочили до попереднього рівня (що було погано).

IOtop показує, що [jbd2 / sda2-8] та [flush-8: 00] завжди перебувають на вершині використання диска. Це Dell R210, апаратний RAID 1 (H200) з великою кількістю вільної пам'яті (загалом 16 ГБ, з яких близько 8 ГБ буфер / кеш).

(*) Кеш - це кеш-код коду APC для PHP, який зменшує доступ до диска для виконання сценарію PHP. Кеш був повний та фрагментований, оскільки він включав файли з екземпляра розробки. Коли я помітив це, я відфільтрував їх.

Питання: чому введення / виведення диска збільшується, коли теоретично він повинен зменшуватися? Нижче наведено кілька графіків з муніна. Кеш був повний з 6 по 8 лютого.

введіть тут опис зображення введіть тут опис зображення Кеш APC наразі нормально.

Зміни після того, як я прокоментував apc.mmap_file_mask, як розповів @ cyberx86

введіть тут опис зображення введіть тут опис зображення

А через кілька днів https://serverfault.com/a/362152/88934


2
Цей графік не показує збільшення IO.
psusi

1
Якщо ви використовуєте захищене файлом відображення пам'яті (наприклад apc.mmap_file_mask=/tmp/apc.XXXXXX), можливо, ви побачите підвищений введення / вивід. Спробуйте налаштувати apc.mmap_file_maskвикористовувати спільну пам’ять (наприклад /apc.shm.XXXXXX) або на /dev/zero(анонімна пам'ять з картами).
cyberx86

1
@psusi з 6 лютого 12 вечора до 8 лютого 12 вечора вона була низькою, потім зросла.
jcisio

@ cyberx86 Я щойно змінив це (прокоментував цю лінію для використання анонімної пам'яті mmapped), і це виглядає так. Я буду стежити ще кілька хвилин, щоб побачити. Дякую.
jcisio

2
@psusi Існувало / було багато проблем, які я можу лише відновити, а не пояснити: 1 / кеш програми APC пропустили (але кеш ОС потрапив у ці файли PHP, тому дуже мало дискового вводу / виводу, менше часу очікування, але більше середнього часу вводу / виводу , який здебільшого фіксує транзакції MySQL InnoDB) 2 / APC кеш-хіт, але APC використовував файли (тоді пропустити кеш ОС, не знаю, чому) 3 / коротко, моє питання "коли кеш погано працював, диска (майже) немає I / O "- те, що ви говорите, абсолютно суперечить тому.
jcisio

Відповіді:


10

Якщо ви використовуєте захищене файлом відображення пам'яті (наприклад apc.mmap_file_mask=/tmp/apc.XXXXXX), можливо, ви побачите підвищений введення / вивід.

Спробуйте налаштувати apc.mmap_file_maskвикористовувати спільну пам’ять (наприклад /apc.shm.XXXXXX) або на /dev/zero(анонімна пам'ять з картами). Якщо параметр не визначений, він за замовчуванням використовує анонімну пам'ять з картами.

Зазвичай, mmapped файли - це чудова річ:

  • У порівнянні з тим, щоб зберігати щось повністю в пам'яті, для файлів з картами зазвичай потрібно менше пам'яті
  • У порівнянні із збереженням чогось у файлі, mmapped файли потребують меншої кількості дискових вводу-виводу (оскільки записи можуть бути об'єднані разом).

Однак, порівняно із збереженням чогось чистого в пам'яті, вони додають введення-виведення - значно тому, коли файл постійно змінюється. Недоліком використання файлів mmapped є відсутність наполегливості - ваш кеш не переживе перезавантаження, оскільки він зберігається лише в пам'яті.

Тому можна припустити, що в той час, коли кеш заповнювався і стабілізувався, він зазнавав найбільші зміни, які доводилося постійно записувати на диск; як тільки кеш був заповнений, ttl для кожного об'єкта сповільнював швидкість передачі даних у кеш, зменшуючи зміни та зменшуючи записи диска.


4

Через кілька днів я хочу повернутися з деякими графіками. Зміна значно покращує ситуацію. Це скорочує все, крім часу обслуговування IO (я думаю, це тому, що вже немає тривіального невеликого файлу PHP, який читається, що дешево).

введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення

Навантаження сервера (воно було вже досить низьким, тому я не виявив змін).

введіть тут опис зображення


Чи можете ви надати зміни, які ви внесли?
Mircea Vutcovici

Прочитайте коментар до запитання та прийняту відповідь. Я прокоментував цеapc.mmap_file_mask=/tmp/apc.XXXXXX
jcisio

Гей, вибачте, що вас турбує. Ви коли-небудь бачили якийсь побічний ефект щодо коментування лінії mmap_file_mask ?. Я бачу ту саму проблему ... і це чітко вирішує мої проблеми використання вводу / виводу. Але мені було цікаво ... якщо нічого більше не зламається !. Дякую!
Хорхе Леандро Перес

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