Tech Recipe Book
My Services
  • Book
    • About the author
    • Architect
      • Algorithms
        • DB index algorithms
          • How does database indexing work
        • Neural network optimization
          • Neural Network Optimization
        • Route search
          • Road network in a database to build a route
          • Traveling Salesman Problem (TSP)
      • Architecture Frameworks
        • DODAF
        • TOGAF
        • Enterprise Architecture (EA) Tools Reviews 2023 | Gartner
      • Zero Trust
      • Billing
        • SHM billing system
      • Bots
        • Discord
        • Telegram
          • Chat GPT Telegram bot
          • Получаем статистику Telegram-канала при помощи api и python или свой tgstat с регистрацией и смс
          • Как хостить телеграм-бота (и другие скрипты на Python) на Repl.it бесплатно 24/7
          • Создание Telegram бота на PHP #1: основные понятия для работы с API
          • Создание Telegram бота на PHP #2: создание первого бота для Telegram
          • Создание Telegram бота на PHP #3: примеры отправки сообщений с кнопками в Telegram
          • Создание Telegram бота на PHP #4: отправка файлов и изображений в Telegram
          • Создание Telegram бота на PHP #5: работа с хуками
      • Business intelligence
      • Cloud Storage
        • Ceph
        • Virtual Distributed File System
      • Cryptography
        • Open Source PKI Software
        • OpenPGP
          • Email Encryption
          • Kleopatra
          • Miscellaneous Tools
          • Server side applications
      • Message broker
        • Kafka
          • Kafka UI-tools
          • Kafka streams ksqlDb
        • RabbitMQ
      • DB
        • MySQL
          • Auto sharding
          • MariaDB Zabbix monitoring
          • MySQL and MariaDB replication with Zabbix monitoring
        • Postgres
          • HA PostgreSQL with Patroni, Haproxy, Keepalived
          • Mass parallel requests - Greenplum
          • PostgreSQL cluster for development and testing
        • Vitess - Scalable. Reliable. MySQL-compatible. Cloud-native. Database.
      • Identity and Access Management (IDM)
        • FreeIPA - Identity, Policy, Audit
        • FreeIPA as an Enterprise solution
        • Keycloak
          • Keycloak HA cluster
        • Open Identity Platform
        • SSO
          • Keycloak for Java app
          • OpenAM
          • OpenIG
      • Firewall
        • nftables
      • Infrastructure As a Code
        • Ansible
        • IaC Packer Ansible Teraform
        • Installing Jenkins using terraform in Kubernetes in Yandex Cloud with letsencypt
        • Teraform Crosplan Pulumi
        • Yandex IaC solutions
      • Kubernetes
        • Installation
          • Install Kubernetes cluster
          • Deploying a Kubespray cluster to OpenStack using Terraform
          • Kube deploy in Yandex cloud
        • Frameworks
          • Deckhouse
            • LDAP authentification
            • On premise Install
            • Yandex Cloud Install
          • K3S
          • OpenShift OKD
          • RKE2
          • Rancher
            • Rancher Install
        • Auth
          • Keycloak in k8s
          • LDAP
        • GUI management Lens
        • Monitoring
          • Monitoring with Falco
          • Network monitoring
          • Nginx ingress
          • Prometheus Graphana for sample Nodejs app
          • Rsource monitoring Avito
        • Exposing services
          • Exposing Kubernetes Services
          • Cilium BGP
        • CNCF
        • Helm
          • Repositories
            • Artifact Hub | official
            • Bitnami | vmware
          • Awesome helm charts and resources
          • Essential Services for Modern Organizations
          • Security and Compliance
          • Additional charts
        • Isolation
          • vcluster - Virtual Kubernetes Clusters
          • Kiosk
          • KubeArmor
          • Control Plane Hardening
          • Hierarchical namespaces
        • Security Center
          • Minesweeper
          • NeuVector by SUSE
          • SOAR in Kubernetes
          • Security Сenter for Kubernetes
        • Terraform CI security
          • Terraform plan analysis with Checkov and Bridgecrew
          • Yandex Terraform scan
        • Vulnerability management
          • Aqua
          • Sysdig
          • Kyverno
          • GitLab
          • NeuVector by SUSE
        • Image scanning
          • Snyk
          • Sysdig
          • Harbor
          • Trivy
        • Signature verification
          • Sigstore
        • Control plane security
          • Gatekeeper
            • Applying OPA Gatekeeper
          • Kyverno
            • Policy as a code. Kyverno
        • Runtime Security
          • Osquery
          • Falco
          • ClamAV
        • Network security
          • Cilium
          • Control Plane Hardening (API restriction)
          • Network policy recipes
          • Service mesh
            • Istio HA, LoadBalance, Rate limit
          • mTLS Autocert
        • Honeypot
          • Building honeypot using vcluster and Falco
        • Backup
          • Kasten K10
        • Secrets
          • Vault CSI Driver
      • Load Balance
        • Nginx
        • HAProxy
          • Proxy methods
          • HAProxy for RDP
          • Payment gateway A/B test with HAProxy
          • HAPRoxy for Percona or Galera
      • Monitoring
        • Zabbix
          • Apache Zabbix
          • Disc Quota
          • Nginx Zabbix
          • SSL certificates Zabix
          • Zabbix notifications
        • Nagios
          • Datacenter monitoring
        • Prometheus and Grafana
      • Windows
        • Sysmon enhanced Windows audit
        • Sysmon to Block Unwanted File
      • Linux
        • Rsync
        • Debian based
          • Apt-Cacher NG
          • Unattended Upgrades in Debian / Ubuntu
        • RedHat basede
          • RPM Server
        • Logs analysis
        • Build armhf qemu
      • NGFW
      • CI/CD
        • DevSecOps
          • DAST
            • Burp
              • Dastardly
            • StackHawk
            • ZAP and GitHub Actions
          • SAST
            • Checkmarx
            • OSV by Google
            • Snyk
            • SonarQube
        • GitLab Runner in Yandex Cloud
        • Dynamic Gitlab Runners in Yandex Cloud
        • GitLab runner in Kubernetes with Werf
        • Kubernetes deploy strategies
        • Kubernetes highload deploy. part 1
        • Kubernetes highload deploy. part 2
        • Kubernetes Argo Rollouts
        • Jenkins in Kubernetes
        • Ansible Semaphore
        • Image storage, scaning and signing
        • Install WireGuard with Gitlab and Terraform
        • CI/CD example fror small web app
        • Threat matrix for CI CD Pipeline
      • SIEM / SOC
        • Datadog
        • Splunk
          • Splunk — general description
        • MaxPatrol
          • MaxPatrol 8 and RedCheck Enterprise
        • QRadar IBM
        • Cloud Native Security Platform (CNAPP) - Aqua
        • OSSIM | AT&T
          • AlienVault (OSSIM) install
        • Wazuh
        • EDR
          • Cortex XDR | Palo Alto Networks
          • Cynet
          • FortiEDR | Fortinet
          • Elastic
        • Elastic
          • Install Elasticsearch, Logstash, and Kibana (Elastic Stack) on Ubuntu 22.04
          • Setting Up Elastic 8 with Kibana, Fleet, Endpoint Security, and Windows Log Collection
        • Threat Intelligence
          • MISP
          • msticpy Microsoft
          • X-Force | IBM
          • Elastic
      • VPN
        • Full-Mesh VPN fastd, tinc, VpnCloud
        • Wireguard
          • WireGuard for Internet access
          • WireGuard on MikroTik and Keenetic
          • WireGuard site to site
        • SoftEther VPN Project
        • Cisco AnyConnect client
        • OpenConnect
        • SSTP python server
      • OS hardening
        • CIS Benchmarks
      • Cloud Providers
      • OpenNebula
        • OpenNebula Edge Cloud - Open Source Cloud & Edge Computing
        • Discover OpenNebula – Open Source Cloud & Edge Computing Platform
        • OpenNebula Multi-Cloud
        • Kubernetes on OpenNebula
        • The Open Source Alternative to Nutanix
        • The Simple Alternative to OpenStack
        • OpenNebula Partner Ecosystem
      • OpenStack
        • Install manual
        • Install with DevStack
      • VM
        • Create a VHD file from a Linux disk
        • Backup / Migration
          • Coriolis
          • Proxmox Backup Server
        • oVirt
        • VMware vCenter
        • Proxmox
      • Docker
        • Container optimization
        • Ubuntu RDP container
      • LXC
        • LXD on Ubuntu 18.04
        • Install, Create and Manage LXC in Ubuntu/Debian
    • Big Data
      • OLAP data qubes
      • Storage and autoscale in Lerua
    • Machine Learning
      • Yandex YaLM 100B. GPT model
      • Kaggle Community Datasts Models
      • AI in video production
      • Image search
      • Chat bots
        • You.com
        • Chat GPT
          • Implementing GPT in NumPy
        • Jailbreak Chat
      • Coding plugins CodeWhisperer
    • Malware
      • Isiaon/Pitraix: Modern Cross-Platform Peer-to-Peer Botnet over TOR
      • theZoo A repository of LIVE malwares
    • Pentest
      • Red Team
        • MITRE ATT&CK matrix
        • C2 Frameworks
          • Brute Ratel C4
          • Cobalt Strike
          • Covenant
          • Havoc Framework
          • Merlin
          • Metasploit
          • Sillenttrinity
          • Sliver
        • Manage and report
          • Dradis Framework
          • Hexway
        • Underground
      • Social engineering
        • Social Engineer Toolkit setoolkit
      • OSINT
        • OSINT for comapny
        • Instagram fishing
      • Forensics
        • Forensics tools
      • Pentesting Methodology
      • Web
      • CI/CD Methodology
      • Cloud Methodology
        • Hacking The Cloud
      • Kubernetes Pentesting
      • Android
        • SSL Unpinning for Android applications
      • iOS
        • SSL unpinning iOS and macOS applications
      • HackBar tool
      • CyberChef Tools
      • Python virtualenv
      • IppSec - YouTube
      • Hacktricks.xyz
    • Compliance
      • 152 ФЗ. Personal data
      • PCI DSS and ГОСТ Р 57580.1-2017
      • Cloud compliance
      • ГОСТ Р 57580.1-2017 для Kubernetes
      • Kubernets as DevSecOps and NIST compliance
      • NIST SP 800-61 cyberincidece control
      • CIS Kubernetes Benchmark v1.6 - RKE2 v1.20
      • CIS Kubernetes Benchmark v1.23 - RKE2
      • Requirements for Russian Banks
      • Tools
        • Chef InSpec
        • Elastic SIEM
    • Asset management
      • CMDBuild
    • Project management
    • Incident management SRE
    • Risk management
      • IT risk management
      • BSI-Standard 200-3
    • Web Dev
      • Cookie security
      • OWASP Top 10 2021
      • Docker nginx php mysql
      • Docker tor hiddenservice nginx
      • Docker Compose wp nginx php mariadb
      • Dependency Checking
        • Nexus Analyzer
        • OWASP dependency-check
      • Yii skeeks cms
      • YiiStudio
    • Art
      • GTK Themes
      • Themes for Xfce Desktop
      • XFCE / Xubuntu Windows 95
      • Moscow events
      • Photo goods
      • Russian style gifts
    • Cryptocurrency
      • News
      • Arbitrage
      • Stocks
      • Exchange aggregators
      • Where to use
      • Prepaid cards
        • BitFree
        • Pyypl Your Money at Your Fingertips
    • IT magazines
      • WIKI and Writeups tools
        • BookStack
        • GitBook
        • MkDocs
        • Wiki.js
        • DokuWiki
    • Languages
    • Learning
      • (ISC)2
        • CISSP
      • Offensive Security
        • OSCP
        • OSEP
        • OSED
      • DevSecOps
        • Certified DevSecOps Professional (CDP)
        • Certified DevSecOps Expert (CDE)
      • Web Security Academy: PortSwigger
    • Relocation
      • London experience
      • IT visas in 2022
      • Remote work
      • Running business in UAE
    • Freenet
      • Independent online services: the philosophy of a free Internet
      • Tor Project Anonymity Online
      • I2P Anonymous Network
    • Services
      • SMS Registration
        • Registering ChatGPT in Russia
      • Local and regional eSIMs for travellers - Airalo
      • Digital busines cards
      • No KYC services and exchanges
Powered by GitBook
On this page
  • Установка Apache в Debian
  • Установка шаблона
  • Подключение модуля status_module
  • Определение порта Apache
  • Проверка модуля status_module
  • Настройка макросов шаблона Apache by Zabbix agent
  • Метрики шаблона Apache by zabbix agent
  • Триггеры шаблона Apache by zabbix agent
  • Графики шаблона Apache by zabbix agent
  • Определение установленного модуля MPM
  • Оптимизация потребления памяти
  • Оптимизация производительности

Was this helpful?

  1. Book
  2. Architect
  3. Monitoring
  4. Zabbix

Apache Zabbix

Last updated 1 year ago

Was this helpful?

На сегодня Apache представляет собой одно из самых популярных ПО для создания Web-сервера. Среди достоинств Apache — доступность, гибкость настройки, модульная структура, позволяющая подключать необходимую функциональность, совместимость с различными платформами, языками программирования и базами данных, масштабируемость и огромное сообщество пользователей.

Очень часто Apache работает в паре с NGINX, об установке и мониторинге которого мы рассказывали в . Вы также можете создать быстрый сайт вообще без Apache, используя только NGINX или другое высокопроизводительное решение.

Но если по тем или иным причинам ваши сайты работают на базе Apache, имеет смысл настроить мониторинг и при необходимости оптимизировать конфигурацию Apache. В этой статье мы расскажем о том, как установить Apache и настроить его мониторинг помощи Zabbix. Также приведем рекомендации по оптимизации памяти и повышения производительности.

Установка Apache в Debian

Если на вашем сервере установлена панель управления, такая как ISPmanager, Hestia Control Panel или другая, то, скорее всего, вместе с ней уже было установлено ПО Apache.

Это легко проверить при помощи следующей команды:

# systemctl status apache2

Когда Apache нет, вы увидите такое сообщение на консоли:

Unit apache2.service could not be found.

Если же Apache работает, на консоли появится информация о запущенном сервисе apache2.service:

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-10-03 12:20:35 MSK; 2h 34min ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 3285064 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 3285068 (apache2)
      Tasks: 55 (limit: 4676)
     Memory: 21.6M
        CPU: 660ms
     CGroup: /system.slice/apache2.service
             ├─3285068 /usr/sbin/apache2 -k start
             ├─3285069 /usr/sbin/apache2 -k start
             └─3285070 /usr/sbin/apache2 -k start

Oct 03 12:20:35 zc621 systemd[1]: Starting The Apache HTTP Server...
Oct 03 12:20:35 zc621 systemd[1]: Started The Apache HTTP Server.

Обратите внимание, что сервис apache2.service должен находиться в статусе active (running), а также enabled. В этом случае Apache будет запущен автоматически при перезагрузке сервера.

В том случае, когда на сервере с панелью управления не установлен Apache, то его нужно устанавливать при помощи панели. Если же панели нет, то ниже мы привели простую инструкцию:

# apt update
# apt upgrade
# apt install apache2

После установки нужно проверить состояние Apache командой «systemctl status apache2», убедившись, что сервис работает и будет автоматически перезапущен при перезагрузке ОС. Если это не так, введите такую команду:

# systemctl enable apache2

Установка шаблона

Шаблон Apache by Zabbix agent не требует установки дополнительных скриптов — просто добавьте его для контролируемого узла с помощью веб-интерфейса Zabbix. Однако для использования этого шаблона к Apache необходимо подключить модуль status_module.

Подключение модуля status_module

Прежде всего проверьте, подключен ли модуль status_module:

# apachectl -M | grep status_module
status_module (shared)

Здесь команда «apachectl -M» выведет на консоль список всех подключенных модулей.

Если модуль не подключен, найдите и отредактируйте файл status.conf:

# ls /etc/apache2/mods-available | grep status.conf
status.conf

В блоке /server-status укажите IP, для которого будет доступна статистика, как 127.0.0.1/32:

<IfModule mod_status.c>
        # Allow server status reports generated by mod_status,
        # with the URL of http://servername/server-status
        # Uncomment and change the "192.0.2.0/24" to allow access from other hosts.
        <Location /server-status>
                SetHandler server-status
                Require local
                Require ip 127.0.0.1/32
        </Location>

        # Keep track of extended status information for each request
        ExtendedStatus On

        # Determine if mod_status displays the first 63 characters of a request or
        # the last 63, assuming the request itself is greater than 63 chars.
        # Default: Off
        #SeeRequestTail On
        <IfModule mod_proxy.c>
                # Show Proxy LoadBalancer status in mod_status
                ProxyStatus On
        </IfModule>
</IfModule>

После редактирования проверьте конфигурацию Apache. Если ошибок нет, подключите модуль status_module и перезапустите сервис:

# apachectl -t
# a2enmod status
# systemctl restart apache2
# systemctl status apache2

Определение порта Apache

Когда на Web-сервере работает только Apache, и нет NGINX, то для Apache используется порт 80 (протокол HTTP) и 443 (протокол HTTPS). В иных конфигурациях Apache может занимать другие порты.

Чтобы определить, на каком порту запущен Apache, установите net-tools:

# apt install net-tools

После установки запустите утилиту netstat следующим образом:

# netstat -ltupan | grep apache2
tcp6       0      0 :::81                   :::*                    LISTEN      3313854/apache2

В данном случае видно, что процесс apache2 занял порт 81.

Для определения порта, занятого процессом apache2, можно также использовать более современную и более «многословную» утилиту ss:

# ss -lpn | grep apache2
tcp   LISTEN 0 511 *:81  *:* users:(("apache2",pid=3313856,fd=4), ("apache2",pid=3313855,fd=4),("apache2",pid=3313854,fd=4))

Порт Apache, который мы только что определили, потребуется нам позже при настройке макросов шаблона Apache by Zabbix agent.

Проверка модуля status_module

Итак, мы подключили модуль status_module, настроили конфигурацию Apache для получения от него информации о состоянии и узнали номер порта, на котором работает Apache.

Теперь в консоли сервера введите такую команду (здесь предполагается, что Apache работает на порту 8080):

$ curl http://127.0.0.1:8080/server-status?auto

В результате на консоли должна появиться детальная информация о состоянии сервиса Apache на момент ввода команды:

127.0.0.1
ServerVersion: Apache/2.4.53 (Debian) mpm-itk/2.4.7-04 OpenSSL/1.1.1n
ServerMPM: prefork
Server Built: 2022-03-14T16:28:35
CurrentTime: Tuesday, 04-Oct-2022 12:13:00 MSK
RestartTime: Monday, 03-Oct-2022 12:24:15 MSK
ParentServerConfigGeneration: 3
ParentServerMPMGeneration: 2
ServerUptimeSeconds: 85724
ServerUptime: 23 hours 48 minutes 44 seconds
Load1: 7.90
Load5: 9.26
Load15: 9.00
Total Accesses: 802231
Total kBytes: 15650007
Total Duration: 2764899414
CPUUser: 1.42
CPUSystem: 60.23
CPUChildrenUser: 507402
CPUChildrenSystem: 58852.9
CPULoad: 660.628
Uptime: 85724
ReqPerSec: 9.3583
BytesPerSec: 186944
BytesPerReq: 19976.3
DurationPerReq: 3446.51
BusyWorkers: 25
IdleWorkers: 0
Scoreboard: WWRWWWWWWWW...........W.......W...W..........................W.............W................W.........C.........W...W..W.......W.......W.........W.W..
TLSSessionCacheStatus
CacheType: SHMCB
CacheSharedMemory: 512000
CacheCurrentEntries: 0
CacheSubcaches: 32
CacheIndexesPerSubcaches: 88
CacheIndexUsage: 0%
CacheUsage: 0%
CacheStoreCount: 0
CacheReplaceCount: 0
CacheExpireCount: 0
CacheDiscardCount: 0
CacheRetrieveHitCount: 0
CacheRetrieveMissCount: 0
CacheRemoveHitCount: 0
CacheRemoveMissCount: 0

Если состояние появилось, значит, можно продолжить настройку шаблона Apache by Zabbix agent.

Настройка макросов шаблона Apache by Zabbix agent

При настройке макросов как минимум необходимо отредактировать значения {$APACHE.PROCESS_NAME} и {$APACHE.STATUS.PORT}.

Первое из них задает имя процесса Apache и здесь по умолчанию указана строка «httpd». В нашем случае процесс называется apache2, поэтому нужно изменить значение соответствующим образом.

Второй из перечисленных макросов задает номера порта, причем по умолчанию указан порт 80. Если ваш сервис Apache работает на другом порту, этот макрос необходимо отредактировать (рис. 1).

Рис. 1. Отредактированные макросы шаблона Apache by Zabbix agent

Макрос {$APACHE.RESPONSE_TIME.MAX.WARN} задает максимальное значение отклика Apache, после превышения которого срабатывает триггер Apache: Service response time is too high.

Что касается макросов {$APACHE.STATUS.SCHEME}, {$APACHE.STATUS.HOST} и {$APACHE.STATUS.PATH}, то они используются при составлении адреса URL для запроса состояния Apache:

$ curl http://127.0.0.1:8080/server-status?auto

Скорее всего, вам не придется изменять их значения.

Метрики шаблона Apache by zabbix agent

В шаблоне Apache by zabbix agent определено более двух десятков метрик. Кроме того, определены правило LLD для метрик MPM, имеющих отношение к соединениям, количеству асинхронных процессов и размеру запросов в байтах.

Часть собираемых метрик показана на рис. 2.

Рис. 2. Часть метрик шаблона Apache by zabbix agent

Здесь определены метрики, определяющие работоспособность Apache и возможность получения статистических данных, метрики, измеряющие ресурсы, потребляемые сервисом Apache, отражающие статистику запросов, а также информацию о рабочих процессах (воркерах) Apache.

Триггеры шаблона Apache by zabbix agent

В шаблоне Apache by zabbix agent определено шесть триггеров (рис. 3).

Рис. 3. Триггеры шаблона Apache by zabbix agent

Самая высокая важность High у триггера Apache: Process is not running. Если установлен этот триггер, сервис Apache не работает, и сайты, расположенные на контролируемом узле, недоступны. Системному администратору необходимо срочно исправить данную ситуацию.

Возможно, Apache завершился аварийно из-за недостатка памяти или не перезапустился после изменения конфигурации, когда новая конфигурация содержит ошибки.

Также высокая важность Average у триггера Apache: Service is down. Этот триггер говорит о том, что агент Apache by zabbix agent не смог обнаружить запущенный процесс Apache.

Если сработал триггер Apache: Service response time is too high, у которого установлена важность Warning, то Apache плохо справляется с запросами, и нужно искать способы оптимизации.

Срабатывание триггера уровня предупреждения Warning с названием Apache: Failed to fetch status page говорит о том, что сбор статистики при помощи модуля status_module не настроен или по какой-то причине перестал работать.

И, наконец, триггеры Apache: has been restarted и Apache: Version has changed с минимальной важностью Information сообщают о перезапуске, а также об изменении версии Apache, соответственно.

Графики шаблона Apache by zabbix agent

В составе шаблона Apache by zabbix agent есть четыре графика, удобных для просмотра статистики по использованию ресурсов и запросам (рис. 4).

Рис. 4. Графики шаблона Apache by zabbix agent

Если Apache потребляет слишком много памяти, возможно, следует изменить конфигурацию Apache или использовать другой MPM. Рекомендации вы найдете ниже в этой статье.

Изменение количества рабочих процессов (воркеров) как запущенных, так и находящихся в состоянии ожидания, можно посмотреть на графике Apache: Workers total.

Детальная статистика по рабочим процессам показана на графике Apache: Worker states.

И, наконец, изменение интенсивности запросов в секунду можно отслеживать на графике Apache: Requests per second.

Определение установленного модуля MPM

Существует три модуля MPM:

  • Prefork;

  • Worker;

  • Event

Модуль Prefork создает дочерние процессы для обработки каждого поступающего запроса. Этот вариант самый надежный, но и самый медленный.

Модуль Worker не создает дополнительные процессы, а обрабатывает запросы при помощи потоков (threads). Этот вариант работает быстрее, так как не требуется создавать новые процессы, и потребляет меньше памяти.

И, наконец, модуль Event тоже обрабатывает запросы в одном процессе. Здесь потоки создаются только для активных соединений.

Кроме перечисленных, на серверах хостинг-провайдеров совместно с модулем Prefork обычно используется модуль mpm_itk_module. Он позволяет сделать так, чтобы каждый сайт на хостинге работал под своим пользователем и будет установлен, в частности, панелью управления ISPmanager.

Для определения подключенных модулей MPM используйте следующую команду:

# apache2ctl -t -D DUMP_MODULES | grep mpm
 mpm_itk_module (shared)
 mpm_prefork_module (shared)

В данном случае используются модули mpm_itk_module и mpm_prefork_module.

При необходимости модуль mpm_itk_module можно установить и подключить так:

# apt-get install libapache2-mpm-itk
# a2enmod mpm_itk

При подключении mpm_itk_module был отключен модуль mpm_event и подключен модуль mpm_prefork:

Considering dependency mpm_prefork for mpm_itk:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Module mpm_itk already enabled

Оптимизация потребления памяти

Оперативная память RAM на сервере — критичный ресурс, который следует расходовать экономно. Что касается Apache, то для поступающих запросов он запускает рабочие процессы (воркеры), потребляющие память.

На потребление памяти влияет состав модулей, подключенных в Apache. Полный список модулей можно посмотреть так:

# apache2ctl -t -D DUMP_MODULES

Ненужные модули для экономии памяти следует отключить. Однако учтите, что между модулями могут быть зависимости. При необходимости узнайте у разработчиков ПО, запущенного на сервере, какие модули Apache им нужны.

Другой способ ограничить использование памяти заключается в уменьшении максимально возможного количества запускаемых процессов MaxRequestWorkers.

При использовании MPM Prefork для этого нужно отредактировать файл /etc/apache2/mods-available/mpm_prefork.conf:

<IfModule mpm_prefork_module>
        StartServers             5
        MinSpareServers          5
        MaxSpareServers          10
        MaxRequestWorkers        150
        MaxConnectionsPerChild   0
</IfModule>

После редактирования проверьте конфигурацию Apache, перезапустите сервис и проверьте его состояние:

# apache2ctl -t
# systemctl restart apache2
# systemctl status apache2

Конфигурации для MPM Worker и Event находятся, соответственно, в файлах /etc/apache2/mods-available/mpm_worker.conf и /etc/apache2/mods-available/mpm_event.conf.

Заметим, что в версиях Apache, более ранних, чем 2.3.13, параметр MaxRequestWorkers назывался MaxClients. Этот параметр может встретиться вам в многочисленных статьях, посвященных оптимизации Apache.

Также для экономии памяти имеет смысл использовать MPM Worker или Event.

Графики, построенные для метрик Apache при помощи Zabbix, окажут вам помощь в определении необходимого количества рабочих процессов, а также позволят контролировать память, выделенную для Apache (рис. 4).

Оптимизация производительности

Для повышения производительности Apache в документации рекомендуется использовать MPM Worker или Event, а также отключить модули, которые не используются.

Модуль mod_mpm_itk повышает безопасность, так как позволяет запускать разные сайты от имени разных пользователей, однако его использование ведет к снижению производительности.

Параметр MinSpareServers при использовании MPM Prefork задает минимальное количество запущенных рабочих процессов Apache. На запуск новых процессов уходит время и ресурсы, поэтому для увеличения производительности можно увеличить значение, равное по умолчанию пяти.

Подробные рекомендации по оптимизации Apache с точки зрения производительности вы найдете в этих статьях:

Автор: Александр Фролов.

Возможно, вам придется устанавливать и подключать дополнительные модули, изменять используемый MPM. При необходимости воспользуйтесь .

Описание данного шаблона можно найти в .

Полный список с описанием есть .

Графики Apache: Memory usage показывают постоянное потребление памяти RSS (Resident Set Size) и объем выделенной виртуальной памяти VSZ (Virtual Memory Size). Подробнее об управлении памятью в Linux можно прочитать, например, .

Прежде чем приступить к оптимизации настроек Apache, следует определить, какой модуль мультипроцессовой обработки MPM (Multi-Processing Module) используется на контролируемом узле. Эти модули описаны в .

Сравнение этих модулей можно .

В для вычисления значения MaxRequestWorkers предлагается разделить общий объем доступной памяти на средний размер памяти, выделенной для процесса Apache. Сколько выделяется памяти для процессов Apache, можно узнать с помощью команды top. Учтите, что память на сервере может быть нужна и для других сервисов, например, для MySQL, nginx, memcached и так далее.

полной инструкцией по установке Apache для разных ОС
документации
здесь
здесь
документации
найти здесь
документации
https://httpd.apache.org/docs/2.4/misc/perf-tuning.html
https://www.woktron.com/secure/knowledgebase/133/How-to-optimize-Apache-performance.html
https://habr.com/ru/companies/first/articles/695012/
предыдущей статье