Назад | Перейти на главную страницу

Необъяснимая загрузка GlusterFS и низкая производительность

Мы запускаем сервер репликации 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/. Для меня это немного помогает с производительностью небольших файлов.