savostin
@savostin
Еще один программист

Как оптимизировать (отложить?) запись в большое количество файлов одновременно?

Подскажите пожалуйста есть ли программно-системное решение данной проблемы.
Есть выделенный сервер. На нем запускается 1000+ "демонов", которые получают данные по HTTP и складывают в файлы.
Важна скорость получения данных (стабильность частоты запросов), актуальность данных в файлах не важна (они обрабатываются потом), т.е. данные в файлах могут появляться "пачками", с задержкой, как угодно, лишь бы не пропали.
В пиковые часы, когда количество демонов достигает определенного значения, load average сервера поднимается выше 100-200%. При этом процессор/память загружены на 10-20%. Т.е. проблема в I/O. При этом страдает стабильность запросов.
Можно как-то настроить систему, применить какое-то кеширование, чтобы запись в файлы не блокировала сервер?
Программно решал и на c++, и на php, и на node.js - везде упирается в I/O.
Или вопрос можно решить только несколькими дисками, желательно SSD?
  • Вопрос задан
  • 323 просмотра
Пригласить эксперта
Ответы на вопрос 1
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Может писать сначала в БД, а потом уже из бд в файлы?
Некоторые базы данных, например монго, имеют из коробки что-то вроде кэширования.
Вот статья, из которой я копирую данные ниже:

По возможности, MongoDB старается держать все данные в оперативной памяти и сбрасывает изменённые данные на диск каждые 60 секунд. MongoDB позволяет управлять как синхронизацей с диском, так и блокировкой на время выполнения запроса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы