PostgreSQL против проблемы производительности Kubernetes
Я провожу несколько тестов производительности для PostgreSQL, чтобы проверить производительность, когда сервер БД работает на VSI и когда он работает на Kubernetes на рабочем узле. Я использую PgBench для запуска этих тестов.
Моя БД (которая в производстве настроена в кластере) имеет большую рабочую нагрузку, поэтому я тестировал на VSI (в IBM Cloud) с 64 vCPU Dual Processor 2.3 GHz 32 ядра и 128 Gb RAM, диск 2Tb 5IOPS на Gb.
Затем я протестировал его на Kubernetes (IBM Cloud) с рабочим узлом 48 vCPU, 192 ГБ RAM, диском 2 Tb 5 IOPS на ГБ.
Проблема в том, что производительность Kubernetes на 50% хуже, чем у VSI, и я не ожидал такой разницы. Поэтому я пытаюсь понять, в чем может быть узкое место.
Диски в тестах похожи и пропускная способность аналогична, поэтому диск не может быть узким местом
Я использовал службу для доступа к модулю, настроенному как Network Load Balancer (раньше это был Application Load Balancer, а производительность была еще хуже). Тем не менее, я также провел тест с взаимодействием Pod to Pod, развернув PgBench на другом рабочем узле в обход службы. Но никаких улучшений замечено не было. Так что я думаю, это должно исключить проблему с балансировщиком нагрузки.
Я решил зарезервировать больше ЦП и ОЗУ для PostgreSQL Pod, добавив что-то вроде этого.
resources: requests: memory: 128Gi cpu: 32 limits: memory: 128Gi cpu: 32
На данный момент я не знаю, что я могу сделать, чтобы улучшить производительность. Любое предложение? Это нормально, что Kubernetes добавляет все эти накладные расходы?