У нас есть база данных с ключом GDBM в качестве бэкэнд для приложения, ориентированного на нагрузку, которое реализовано на C++. Данные, обслуживаемые приложением, стали очень большими, поэтому наши администраторы переместили файлы GDBM из «локального» хранилища (в веб-серверы или очень близко) к большой, общей, удаленной файловой системе с NFS-подключением.Альтернатива или успех для GDBM
Это повлияло на производительность. Наши тесты производительности (в тестовой среде) показывают время загрузки страницы с сотен миллисекунд (для локального диска) до нескольких секунд (через NFS, локальная сеть) и иногда достигают 30 секунд. Я считаю, что большая часть проблемы заключается в том, что приложение делает множество случайных чтений из файлов GDBM и что они медленны по сравнению с NFS, и это будет еще хуже в производстве (где интерфейсные и серверные больше сетевого оборудования между ними), и поскольку наша база данных становится еще больше.
Хотя это не критическое приложение, я хотел бы улучшить производительность и предоставить некоторые ресурсы, включая время разработки приложений и администраторов Unix. Моим основным ограничением является время, когда у вас есть ресурсы на несколько недель.
Как я понимаю, мои варианты:
Повышение производительности NFS с помощью параметров настройки. Мой инстинкт заключается в том, что мы не получим многого из этого, но раньше я был неправым, и я не очень много знаю о настройке NFS.
Переместить в другую базу данных ключа, такую как memcachedb или Tokyo Cabinet.
Замените NFS другим протоколом (iSCSI упоминается, но я не знаком с ним).
Как подойти к этой проблеме?