5 petua untuk meningkatkan prestasi pelayan web Apache anda

5 petua untuk meningkatkan prestasi pelayan web Apache anda

Menurut laporan baru-baru ini oleh NetCraft (sebuah syarikat internet terkenal yang menyediakan statistik penggunaan pelayar web lain), Apache terus menjadi pelayan web yang paling banyak digunakan di antara laman web dan komputer yang dihadapi internet.

5 petua untuk meningkatkan prestasi pelayan web Apache anda

Di samping itu, Apache terus mengalami pertumbuhan terbesar di kalangan pelayan web teratas, diikuti oleh Nginx dan Iis. Oleh itu, jika anda adalah pentadbir sistem yang bertanggungjawab menguruskan pemasangan Apache, anda perlu tahu bagaimana untuk memastikan pelayan web anda berfungsi dengan sebaik mungkin mengikut keperluan anda (atau pelanggan anda).

Dalam artikel ini, kami akan membincangkan beberapa petua yang akan membantu anda memastikan bahawa Apache akan berjalan lancar dan dapat mengendalikan bilangan permintaan yang anda harapkan dari pelanggan jauh.

Walau bagaimanapun, sila ingat bahawa Apache tidak direka dengan objektif menetapkan rekod penanda aras - tetapi, walaupun begitu, ia masih mampu menyediakan prestasi tinggi dalam hampir mana -mana kes penggunaan yang anda mungkin dapat memikirkan.

Petua #1: Sentiasa simpan Apache yang dikemas kini dengan versi terkini

Ia tidak mengatakan bahawa mempunyai versi terbaru Apache yang dipasang mungkin salah satu perkara pertama yang perlu anda pertimbangkan. Sehingga 19 November 2015, versi terbaru Apache yang terdapat di Centos 7 repositori adalah 2.4.6, sedangkan dalam Debian adalah 2.4.10.

Walau bagaimanapun, mungkin terdapat peningkatan baru-baru ini atau penetapan pepijat yang telah ditambah kepada versi stabil yang baru dikeluarkan, yang kemudiannya disediakan untuk memuat turun dan memasang dari sumber. Arahan Penyusunan dan Pemasangan juga disediakan di sini - ingatlah bahawa jika anda memilih kaedah kemas kini ini, anda mungkin ingin menyandarkan fail konfigurasi / tapak / laman maya semasa anda sebagai langkah berjaga -jaga.

Dalam apa jua keadaan, anda boleh menyemak versi anda yang sedang dipasang seperti berikut:

# httpd -v [pada sistem berasaskan redhat/centos] # apache2 -v [pada sistem berasaskan debian/ubuntu] 
Semak versi Apache

Sebagai peraturan, berpegang dengan kaedah kemas kini yang disediakan oleh pengurus pakej pengedaran pilihan anda (yum update httpd atau Aptitude Safe-Upgrade Apache2, untuk centos atau debian, masing -masing) melainkan tidak ada cara lain. Anda boleh membaca Nota Siaran Terkini di bahagian Dokumentasi Apache di laman web Projek Pelayan HTTP Apache.

Petua #2: Sekiranya anda menggunakan kernel lebih tua dari 2.4, pertimbangkan untuk menaik taraf sekarang

Kenapa? Versi kernel 2.4 dan di atas mempunyai panggilan sistem kernel SendFile yang didayakan secara lalai. Ini seterusnya memudahkan pemindahan fail rangkaian prestasi tinggi (yang dikehendaki dalam konteks komunikasi klien pelayan web) dan membolehkan Apache menyampaikan kandungan statik lebih cepat dan dengan penggunaan CPU yang lebih rendah dengan melaksanakan operasi dan hantar serentak.

Anda boleh melihat kernel anda yang sedang dipasang dengan:

# uname -r 

dan bandingkan dengan kernel stabil terkini di www.kernel.org (4.3 Pada masa penulisan ini).

Semak versi kernel Linux

Walaupun ia adalah proses yang tidak dimaksudkan untuk pemula, menaik taraf kernel anda adalah latihan yang menarik untuk mengetahui lebih lanjut mengenai internal Linux.

Petua #3: Pilih Modul Multi-Processing (MPM) yang paling sesuai untuk kes anda

Dalam latihan, MPMS Memperluas fungsi modular Apache dengan membolehkan anda memutuskan cara mengkonfigurasi pelayan web untuk mengikat ke port rangkaian pada mesin, menerima permintaan dari pelanggan, dan menggunakan proses kanak -kanak (dan benang, secara alternatif) untuk mengendalikan permintaan tersebut.

Bermula dengan Versi 2.4, Apache menawarkan tiga MPM yang berbeza untuk dipilih, bergantung pada keperluan anda:

  1. The Prefork MPM menggunakan banyak proses kanak -kanak tanpa benang. Setiap proses mengendalikan satu sambungan pada satu masa tanpa membuat benang berasingan untuk masing -masing. Tanpa terlalu terperinci, kami boleh mengatakan bahawa anda akan mahu menggunakan MPM ini hanya apabila menyahpepijat aplikasi yang digunakan, atau jika aplikasi anda perlu berurusan dengan, modul yang tidak selamat seperti mod_php.
  2. The pekerja MPM menggunakan beberapa benang setiap proses kanak -kanak, di mana setiap benang mengendalikan satu sambungan pada satu masa. Ini adalah pilihan yang baik untuk pelayan trafik tinggi kerana ia membolehkan lebih banyak sambungan serentak dikendalikan dengan kurang ram daripada dalam kes sebelumnya.
  3. Akhirnya, peristiwa Mpm adalah mpm lalai dalam kebanyakan pemasangan Apache untuk versi 2.4 dan ke atas. Ia serupa dengan mpm pekerja kerana ia juga mewujudkan pelbagai benang setiap proses kanak -kanak tetapi dengan kelebihan: ia menyebabkan Tetap atau terbiar Sambungan (sementara mereka tetap berada di keadaan itu) untuk dikendalikan oleh satu benang, dengan itu membebaskan ingatan yang dapat diperuntukkan kepada benang lain. MPM ini tidak sesuai digunakan dengan modul yang tidak selamat mod_php, yang mana pengganti seperti itu PHP-FPM mesti digunakan sebagai gantinya.

Untuk memeriksa Mpm Digunakan oleh pemasangan Apache anda, anda boleh lakukan:

# httpd -v 

Imej di bawah menunjukkan bahawa pelayan web tertentu ini menggunakan Prefork mpm.

Semak Apache mpm

Untuk mengubahnya, anda perlu mengedit:

#/etc/httpd/conf.modul.D/00-mpm.conf [pada sistem berasaskan redhat/centos] #/etc/apache2/mods-tersedia/.Beban [pada sistem berasaskan Debian/Ubuntu] 

Di mana boleh mpm_event, mpm_worker, atau mpm_prefork.

dan uncomment garis yang memuat modul yang dikehendaki seperti itu:

Loadmodule mpm_event_module modul/mod_mpm_event.Jadi 

Catatan: Untuk membuat acara MPM berfungsi di Debian, anda mungkin perlu memasang libapache2-mod-fastcgi pakej dari repositori yang tidak bebas.

Di samping itu, untuk centos yang anda perlukan PHP-FPM (bersama dengan fcgi dan mod_fcgid) sedangkan di Debian ia dipanggil Php5-FPM (bersama dengan Apache2-mpm-Event).

Terakhir, tetapi sekurang -kurangnya, mulakan semula pelayan web dan yang baru dipasang PHP-FPM (atau Php5-FPM) Perkhidmatan:

Pada redhat/centos

# Systemctl mulakan semula httpd php-fpm && systemctl enable httpd php-fpm 

Di Debian/Ubuntu

# Systemctl Mulakan semula Apache2 Php5-Fpm && Systemctl Dayakan APACHE2 PHP5-FPM 

Walaupun anda boleh menetapkan Apache untuk menggunakan MPM tertentu, konfigurasi itu dapat ditindih atas dasar hos per-virtual dengan cara yang sama seperti yang ditunjukkan sebelumnya.

Hanya jatuhkan tag yang sepadan ke dalam fail konfigurasi untuk setiap hos maya dan anda sudah bersedia untuk pergi - tetapi pastikan anda menggunakan satu dan hanya satu mpm setiap vhost.

Akhirnya, sila ambil perhatian bahawa tanpa mengira pengedaran pilihan anda, PHP-FPM bergantung pada pelaksanaan Fastcgi, yang menjadi alasan mengapa saya mencadangkan pemasangan pakej tambahan lebih awal.

Untuk maklumat lanjut dan contoh mengenai PHP-FPM Dan bagaimana ia dapat bersama dengan MPM acara meningkatkan prestasi Apache, anda harus merujuk kepada dokumentasi rasmi.

Inilah yang saya lihat selepas menukar MPM lalai dari prefork ke acara dalam kotak yang sama yang ditunjukkan dalam imej sebelumnya:

Pilih modul Apache MPM

Dalam Centos 7, anda perlu memastikan bahawa http dan https Perkhidmatan diaktifkan melalui firewall, dan antara muka rangkaian (s) ditambah dengan betul ke zon lalai.

Sebagai contoh:

# firewall-cmd --Zone = internal --Add-interface = Tun6to4 # firewall-cmd --Zone = internal --Add-interface = Tun6to4 --Panen -CMD --Add-Service = http # firewall-cmd --Add-service = https # firewall-cmd --add-service = http --permanent # firewall-cmd --add-service = https --permanent # firewall # -CMD -Reload 

Sebab mengapa saya membawanya adalah kerana saya baru -baru ini mengalami masalah di mana tetapan konfigurasi firewalld lalai dalam VP awan dicegah PHP-FPM dan Apache dari memproses fail php.

Sebagai ujian asas (saya pasti anda boleh memikirkan yang lebih rumit atau tertekan), saya akan membuat fail php yang memeriksa kewujudan fail lain yang dinamakan ujian.php Dalam direktori yang sama dua pelayan CentOS 7 dengan ciri dan beban perkakasan yang sama tetapi dengan MPM yang berbeza. Salah seorang daripada mereka akan menggunakan acara dan yang lain akan menggunakan Prefork:

Bandingkan Acara Apache dan Modul Prefork

Ini adalah kod php yang saya simpan ke dalam fail yang dinamakan checkiffileexists.php:

 

Kemudian kami akan menjalankan alat penanda aras Apache (AB) dengan 200 permintaan serentak sehingga 2000 Permintaan selesai:

# ab -k -c 100 -n 2000 localhost/checkiffileexists.php 

Mari jalankan ujian dan bandingkan hasilnya. Perhatikan statistik prestasi:

Ujian Beban Prestasi Apache

Seperti yang anda lihat, prestasi pelayan dengan acara sangat unggul daripada Prefork rakan sejawat dalam setiap aspek ujian ini.

Petua #4: Peruntukkan Ram dengan bijak untuk Apache

Mungkin item perkakasan paling kritikal yang perlu diambil kira adalah jumlah Ram diperuntukkan untuk setiap proses Apache. Walaupun anda tidak dapat mengawalnya secara langsung, anda boleh menyekat bilangan proses kanak -kanak melalui MaxRequestworkers arahan (dahulunya dikenali sebagai MaxClients di Apache 2.2), yang akan meletakkan had penggunaan RAM oleh Apache. Sekali lagi, anda boleh menetapkan nilai ini pada setiap hos atau setiap host maya.

Untuk melakukan ini, anda harus ambil perhatian tentang jumlah purata RAM yang digunakan oleh Apache, kemudian darabkan dengan bilangan MaxRequestworkers, Dan itulah jumlah ingatan yang akan diperuntukkan untuk proses Apache. Satu perkara yang anda tidak mahu pelayan web anda lakukan ialah mula menggunakan swap, kerana itu akan mengurangkan prestasinya dengan ketara. Oleh itu, anda harus sentiasa menyimpan penggunaan RAM oleh Apache dalam had yang anda mampu dan tidak pernah bergantung pada pertukaran untuknya.

Sebagai contoh, blok berikut akan menyekat bilangan pelanggan serentak ke 30. Sekiranya lebih ramai pelanggan memukul tuan rumah, mereka mungkin mengalami kelewatan atau kegagalan seketika yang dapat diselesaikan dengan mudah dengan menyegarkan penyemak imbas. Walaupun ini mungkin dianggap tidak diingini, lebih sihat untuk pelayan dan dalam jangka masa panjang, terbaik untuk laman web anda juga.

Anda boleh meletakkan blok ini di dalam /etc/httpd/conf/httpd.Conf atau /etc/apache2/apache2.Conf, Bergantung pada sama ada anda menggunakan Centos atau Debian.

Sila ambil perhatian bahawa prinsip yang sama berlaku untuk semua MPMS - Saya menggunakan acara di sini untuk meneruskan konsep yang digariskan di hujung sebelumnya:

 Startservers 3 MinspareThreads 25 MaxSpareThreads 75 Threadlimit 64 Threadsperchild 25 MaxRequestworkers 30 MaxConnectionSperchild 1000  

Dalam apa jua keadaan, sangat disyorkan bahawa anda merujuk kepada Apache 2.4 dokumen untuk melihat arahan mana yang dibenarkan untuk mpm yang anda pilih.

Petua #5: Ketahui Aplikasi Anda

Sebagai peraturan, anda tidak boleh memuatkan modul Apache yang tidak diperlukan untuk permohonan anda untuk berfungsi. Ini memerlukan sekurang -kurangnya pengetahuan keseluruhan aplikasi yang dijalankan di pelayan anda, khususnya jika anda adalah pentadbir sistem dan ada pasukan lain yang bertanggungjawab dalam pembangunan.

Anda boleh menyenaraikan modul yang sedang dimuat dengan:

# httpd -m [pada sistem berasaskan redhat/centos] # apache2ctl -m [pada sistem berasaskan debian/ubuntu] 

Untuk memunggah / melumpuhkan modul di Centos, anda perlu mengulas garis yang bermula dengan LoadModule (sama ada dalam fail konfigurasi utama atau dalam satu tambahan di dalamnya /etc/httpd/conf.modul.d.

Sebaliknya, Debian Menyediakan alat yang dipanggil a2dismod untuk melumpuhkan modul dan digunakan seperti berikut:

# A2DISMOD MODULE_NAME 

Untuk membolehkannya kembali:

# a2enmod module_name 

Dalam mana -mana kes, ingatlah untuk memulakan semula Apache untuk perubahan yang berkuatkuasa.

Ringkasan

Dalam artikel ini kami telah mengkaji 5 petua yang akan membantu anda menyesuaikan pelayan web Apache dan meningkatkan prestasinya. Di samping itu, anda harus ingat bahawa pengoptimuman dan prestasi tanpa keselamatan adalah sia -sia, jadi anda mungkin mahu merujuk kepada pemasangan mod_pagespeed untuk meningkatkan prestasi webserver dan artikel tip pengerasan Apache di Tecmint.com juga.

Oleh kerana kita tidak dapat melindungi semua aspek topik ini dengan secukupnya dalam artikel ini, mungkin anda akan memikirkan idea -idea lain yang ingin anda kongsi dengan seluruh masyarakat. Jika ya, jangan ragu untuk memberitahu kami menggunakan borang komen di bawah.