Комментарии 6
После долгих экспериментов мы остановились на ngnix unit вместо php-fpm в контейнерах.
Спасибо за статью. Тоже приходилось решать похожую задачу. Единственное, специально отключил динамические пулы в fpm: не думаю что они полезны в подах. Если вы определяете limits/requets ресурсов по памяти, то помоем лучше сразу ставить столько, сколько влезает в под. Постольку fpm не шарит ресурсы с другими, как в случае настоящего сервера, то и смысла расти а потом сжиматься динамически особо нет. Плюс мониторинг проще.
p.s. Интересно было бы еще добавить подтему мониторинга: на какие метрики и для чего смотрите а первую очередь.
Расскажите, пожалуйста, как вы прикрутили мониторинг/сбор метрик для prometheus к php-fpm подам? Мне сейчас предстоит такая задача, я не программист на php и немного теряюсь в инструментах. Пока нашел вариант через sidecontainer, где-то в документации к prometheus, но смущает, что ссылка ведет на гитхаб репу, которая обновлялась очень давно
Я у себя на проекте делал через sidecontainer, на основе этих метрик так же работает hpa, при утилизации php-fpm процессов и большом увеличении запросов записи nginx "sum(avg_over_time(nginx_connections_writing{<<.LabelMatchers>>}[15s])-avg_over_time(nginx_connections_waiting{<<.LabelMatchers>>}[15s]))
" , в результате трех метри CPU, PHP-FPM и NGINX который также сайдкаром работает происходит скалирование контенеров, php-fpm static использует пулл
{{ if .Values.metricsNginx.enabled }} - image: nginx/nginx-prometheus-exporter:0.11.0 imagePullPolicy: IfNotPresent name: exporter-nginx command: - "/usr/bin/nginx-prometheus-exporter" ports: - name: metrics-nginx containerPort: 9113 protocol: TCP resources: requests: cpu: 10m memory: 12Mi limits: cpu: 50m # memory: 1Gi args: - "-nginx.scrape-uri" - "http://127.0.0.1:81/nginx_status" {{- end }} {{- end }} {{ if .Values.metricsPhpfpm.enabled }} - image: hipages/php-fpm_exporter:2.2.0 imagePullPolicy: IfNotPresent name: php-fpm-exporter env: - name: PHP_FPM_SCRAPE_URI value: tcp://127.0.0.1:9000/status - name: PHP_FPM_WEB_LISTEN_ADDRESS value: ":9253" - name: PHP_FPM_FIX_PROCESS_COUNT value: "true" ports: - name: metrics-php containerPort: 9253 protocol: TCP resources: limits: cpu: 40m # memory: 32Mi requests: cpu: 40m memory: 32Mi {{- end }}
Legacy PHP-FPM в Kubernetes