Могу ли я повысить производительность сервера сборки, переключившись с хранилища EBS на хранилище EFS?

Мне интересно, смогу ли я получить серьезные улучшения в производительности, перенастроив наш сервер сборки Jenkins для использования EFS (реализация AWS NFS) вместо дисков EBS.

В то время как EFS примерно в 3 раза дороже на гигабайт, реальная стоимость, вероятно, будет примерно в 2 раза дороже, потому что в EFS вы платите только за использованное пространство, а не EBS, где вы платите все это.

Также у EFS есть еще одно очень важное преимущество: он масштабируется без необходимости что-либо снимать для обновления. Изменение размера диска EBS - это трудоемкая операция, которая включает простои.

Этот вопрос не о стоимости, а скорее о производительности, так как если бы я мог повысить скорость сборки даже на 20%, то стоимость хранилища была бы явно преодолена (не говоря уже о преимуществе, заключающемся в необходимости меньшего обслуживания в дальнейшем).

2 ответа

Из моего непосредственного опыта это очень плохая идея для сервера Jenkins. Мы решили сэкономить на административных расходах и накладных расходах на автоматизацию, связанных с созданием, расширением и иным управлением томами EBS, поэтому мы поставили наш Jenkins на свое место в EFS.

Проблема в том, что сборки Jenkins часто включают в себя множество крошечных файлов (например, модулей javascript npm), что является наихудшим сценарием для EFS и, в действительности, для любой реализации NFS. Файловое хранилище требует обходов сервера для каждого доступа к файлу. В нашем конкретном случае очистка рабочих областей даже небольших проектов может занять несколько минут на сервере Jenkins с его домашним каталогом в EFS.

Избавь себя от неприятностей, учись на наших ошибках; мы собираемся отменить этот выбор. Ваш сервер Jenkins почти наверняка будет намного медленнее, чем сервер на основе EBS.

Вот мои промежуточные результаты моей попытки использовать AWS EFS для хранения домашнего каталога Jenkins (который включает в себя рабочие пространства).

Моя ошибка состояла в том, что я пропустил эту хорошо скрытую страницу о производительности EFS, которую я хотел бы резюмировать, что если вы не хотите хранить огромное количество данных в EFS, они могут взорваться только в течение 0,5% дня.... где пакет - это то, что мы хотели бы все ожидают как нормального исполнения.

Кажется, EFS не только чертовски медленная, но и очень медленная, настолько медленная, что мне не удалось выполнить rsync только 8 ГБ данных с локального тома EBS на том EFS.

root@hostname:/efs# time rsync -ah --info=progress2 /jenkins/ /efs
        816.72M   6%  609.02kB/s    0:21:49 (xfr#12490, ir-chk=1009/273305)
          2.71G  18%  871.55kB/s    0:50:40 (xfr#42955, ir-chk=1070/306870)

Средняя скорость была около 1,5 мБ / с, что смешно.

Из-за этого я решил даже не тестировать работу Дженкинса.

Я пытался выяснить, не было ли это вызвано тем, что AWS ограничивал мою скорость, но мониторинг EFS не указывает, что это так. Я думаю, что это ожидаемая производительность, которую вы можете получить, если вам придется обрабатывать много маленьких файлов. Посмотрите на скриншот:

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