Использование RAM Disk в производственной среде для ускорения работы приложений

Мое приложение сталкивается с проблемами из-за своей болтливости с базой данных. Из-за множества операций ввода-вывода или вызовов базы данных требуется много времени для выполнения специальных задач пакетной обработки. Идет оптимизация кода, и этот процесс займет некоторое время, чтобы показать положительные результаты.

  • Могу ли я установить RAMdisk в производственной среде и установить jdk и SQL-сервер в RAMDisk?
  • Поможет ли это всем операциям ввода-вывода?
  • Могу ли я получить некоторое повышение производительности хотя бы в случае пакетных заданий?

2 ответа

Решение

Как предложил @BaileyS, хорошим компромиссом является использование надежного SSD-накопителя. Если у вас много данных, вы можете использовать SSD только для хранения индексов базы данных и хранения данных на обычном диске.

Я не рекомендовал бы использовать RAM-диск, если вы не делаете резервные копии очень часто, или данные на нем не важны.

Вместо этого я бы попытался максимизировать кеширование файлов вашей ОС. Если ваши файлы кэшируются в ОЗУ, то работа с ними очень похожа на работу с RAM-диском. В Linux вы можете снизить ядро vfs_cache_pressure Это означает, что ядро ​​будет стараться держать кэшированные файлы в оперативной памяти. А также установить vm.swappiness до 100, чтобы система более активно выгружала неиспользуемые страницы памяти, оставляя оперативную память доступной для кэширования. Это может значительно ускорить процесс. См. Можно ли настроить систему Linux для более агрессивного кэширования файловой системы?

Предполагая, что большая часть времени уходит в базу данных в ожидании ввода / вывода, RAM-диск, безусловно, поможет (но долговечность исчезла). Но почему бы просто не перейти на базу данных в памяти, такую ​​как h2, возможно, даже во встроенном режиме, чтобы сократить задержки в сети?

Другие вопросы по тегам