Мы запускаем сервер репликации GlusterFS на 2 узлах и у нас 2 клиента. Демон самовосстановления включен. Каждый клиент подключается к другому серверу с помощью клиента Gluster. У нас на томе Gluster много очень маленьких файлов.
Мы используем GlusterFS 3.9.1 из официальных репозиториев APT GlusterFS в системе Debian Jessie.
Проблема, с которой мы сталкиваемся, заключается в том, что один из серверов имеет среднюю нагрузку 0,1-0,5, а другой - 200. На сервере с высокой нагрузкой также постоянно передается огромное количество данных на оба клиентских узла. Этот поток данных продолжается, даже когда клиенты не читают данные записи.
Следующие значения измеряются nload
и iftop
:
сервер: исходящие 35-40 МБ / с
Два клиента: входящие 17-20 МБ / с
Наша работа на клиенте Gluster очень низкая. An ls
может занять до 10 секунд, а наше приложение работает очень медленно.
Серверы и клиенты подключаются по внутренней сети центра обработки данных и могут обрабатывать гораздо большую пропускную способность, поэтому это не является ограничивающим фактором.
1: Являются ли эти различия в нормальном поведении нагрузки сервера для GlusterFS и чем это вызвано?
2: Почему существует такой высокий постоянный поток данных для клиентов с одного из серверов.
Кажется, я не могу найти никакой информации по этому поводу в документации Gluster или в Интернете.
> 1: Являются ли эти различия в нормальном поведении загрузки сервера для GlusterFS и чем это вызвано?
Посмотрите глубже на источник нагрузки. Где узкое место? CPU / Disk-IO / ... (инструменты, например, top, iotop)
Возможно, высокая нагрузка основана на io-wait.
Проверьте, достаточно ли свободной памяти, чтобы gluster мог использовать кеш.
> 2: Почему существует такой высокий постоянный поток данных для клиентов с одного из серверов.
Проверьте, какая программа какие данные отправляет на какой хост. nload и iftop дают вам представление о трафике для всего сетевого интерфейса. поэтому попробуйте nethogs, который дает вам трафик (dev, отправлено, получено) по PID.
Записи от клиентов должны быть написаны на текущем gluster-сервере. Текущий сервер gluster должен отправить файл другому серверу gluster. Когда оба сервера записали файл, клиент получает подтверждение.
Может, эта процедура "удваивает" сетевой трафик на gluster-сервере !? (см. инструменты мониторинга сети ... какие процессы и куда идет трафик)
общие проблемы с производительностью:
Проверьте сетевую задержку и посмотрите сообщение в блоге Джо Джулиана (выполните поиск по запросу "Соединения с высокой задержкой")
Ls для 10 секунд может быть "нормальным", если в каталоге очень много файлов. Это связано с тем, что все метаданные для каждого файла должны запрашиваться с сервера gluster. Видеть этот пост, посвященный производительности nfs и gluster-client для более подробного объяснения.
Возможно, вам будет интересен http: // blog.gluster.org/2016/10/gluster-tiering-and-small-file-performance/. Для меня это немного помогает с производительностью небольших файлов.