Pengoptimuman prestasi Apache2

Ramai orang menggunakan apache2 sebagai pelayan web. Walau bagaimanapun, beberapa orang berfikir tentang mengoptimumkan prestasinya, yang secara berkadar secara langsung mempengaruhi kelajuan pemuatan halaman tapak, kelajuan skrip pemprosesan (khususnya php), serta peningkatan beban CPU dan peningkatan jumlah RAM yang digunakan.

Oleh itu, manual berikut harus membantu pengguna pemula (dan bukan sahaja).
Semua contoh di bawah telah digunakan pada Raspberry PI 3, Debian 9, Apache 2.4.38, PHP 7.3.

Jadi, mari kita mulakan.

1. Melumpuhkan modul yang tidak digunakan

Kaedah pertama ialah dengan hanya melumpuhkan modul yang anda tidak gunakan:

Senarai modul yang sedang digunakan boleh dilihat dengan arahan:

apache2ctl -M

Untuk melumpuhkan modul, gunakan arahan:

a2dismod *Π½Π°Π·Π²Π°Π½ΠΈΠ΅ модуля*

Sehubungan itu, untuk mendayakan modul, gunakan arahan:

a2enmod *Π½Π°Π·Π²Π°Π½ΠΈΠ΅ модуля*

Sila ambil perhatian bahawa apabila menggunakan a2dismod, nama modul mesti ditulis tanpa perkataan modul itu sendiri.

Sebagai contoh, jika anda berada dalam output arahan apache2ctl -M melihat modul_proksi, kemudian untuk melumpuhkannya anda perlu menggunakan arahan - proksi a2dismod

Modul yang paling banyak memuatkan sistem (daripada pengalaman peribadi) ialah:

  • PHP, Ruby, Perl dan modul lain untuk pelbagai bahasa skrip
  • SSL
  • Tulis semula
  • CGI

Jadi dalam kes di mana anda tidak memerlukan modul ini, saya cadangkan untuk melumpuhkan modul ini.

Juga, selepas melumpuhkan mana-mana modul, saya cadangkan menggunakan arahan - apache2ctl configtest, yang akan menyemak konfigurasi tapak yang digunakan dan jika mana-mana modul yang dilumpuhkan diperlukan untuk mereka, ia akan menjana ralat.

2. Menukar MPM (Modul Berbilang Pemprosesan) dan menggunakan php-fpm

Secara lalai, selepas pemasangan, apache2 menggunakan MPM Prefork (1 utas setiap 1 sambungan), yang mengurangkan prestasi dengan ketara, tetapi pada masa yang sama meningkatkan kestabilan dan keselamatan.

Tetapi untuk mengoptimumkan prestasi, saya mengesyorkan menggunakan MPM Worker, yang membolehkan anda menggunakan berbilang benang bagi setiap sambungan.

Untuk membolehkannya kami menggunakan arahan berikut:

a2dismod mpm_prefork  //ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ prefork
a2dismod php7.3  //ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ php, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ зависит ΠΎΡ‚ prefork
a2enmod mpm_worker  //Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ worker

Walau bagaimanapun, apabila menggunakan Worker anda mungkin menghadapi masalah kerana... Modul php7.3 bergantung pada modul Prefork.

Untuk menyelesaikan masalah ini, mari pasang modul php7.3-fpm, yang akan digunakan untuk menjalankan skrip PHP:

apt-get update && apt-get install php7.3-fpm  //УстанавливаСм
systemctl enable php7.3-fpm && systemctl start php7.3-fpm  //ДобавляСм Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈ запускаСм
a2enmod php7.3-fpm && a2enconf php7.3-fpm.conf  //Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ для Π½Π΅Π³ΠΎ

Perlu diingat bahawa menggunakan php-fpm juga akan mengurangkan jumlah RAM yang digunakan oleh proses apache2 dan sedikit mempercepatkan pemprosesan skrip PHP.

3. Kesimpulannya

Oleh itu, dengan tindakan mudah sedemikian kami dapat mengoptimumkan prestasi dan mengurangkan beban pada mesin (dalam kes ini RPI3).

Sudah tentu, terdapat beratus-ratus pilihan pengoptimuman lain, seperti mendayakan pemampatan (yang benar-benar berguna, tetapi kebanyakannya sudah didayakan secara lalai), menukar tetapan MPM (fail konfigurasi), melumpuhkan HostnameLookups, dll., tetapi dalam artikel ini saya cuba untuk refleksi Ini adalah perkara yang paling membantu saya, dan saya harap akan membantu orang lain.

Sumber: www.habr.com

Tambah komen