5 tips untuk meningkatkan kinerja server web Apache Anda
- 3902
- 468
- Jermaine Mohr
Menurut laporan terbaru oleh NetCraft (perusahaan internet terkenal yang menyediakan di antara layanan lain Statistik Penggunaan Browser Web), Apache terus menjadi server web yang paling banyak digunakan di antara situs dan komputer yang menghadap ke internet.
5 tips untuk meningkatkan kinerja server web Apache AndaSelain itu, Apache terus mengalami pertumbuhan terbesar di antara server web teratas, diikuti oleh Nginx Dan IIS. Dengan demikian, jika Anda adalah administrator sistem yang bertugas mengelola instalasi Apache, Anda perlu tahu cara memastikan server web Anda melakukan yang terbaik dari kapasitasnya sesuai dengan kebutuhan Anda (atau Anda).
Dalam artikel ini kami akan membahas beberapa tips yang akan membantu Anda memastikan bahwa Apache akan berjalan dengan lancar dan dapat menangani jumlah permintaan yang Anda harapkan dari klien jarak jauh.
Namun, harap diingat bahwa Apache tidak dirancang dengan tujuan pengaturan catatan benchmark - tetapi, meskipun demikian, masih mampu memberikan kinerja tinggi di hampir semua kasus penggunaan yang dapat Anda pikirkan.
Kiat #1: Selalu terus Apache diperbarui ke versi terbarunya
Tak perlu dikatakan bahwa memiliki versi terbaru dari Apache yang diinstal mungkin adalah salah satu hal pertama yang perlu Anda pertimbangkan. Pada 19 November 2015, versi terbaru dari Apache yang tersedia di Centos 7 repositori adalah 2.4.6, sedangkan di Debian adalah 2.4.10.
Namun, mungkin ada peningkatan terbaru atau perbaikan bug yang telah ditambahkan ke versi stabil yang baru dirilis, yang kemudian tersedia untuk diunduh dan diinstal dari sumber. Instruksi kompilasi dan instalasi juga disediakan di sini - ingatlah bahwa jika Anda memilih metode pembaruan ini, Anda mungkin ingin mencadangkan file / situs konfigurasi Anda saat ini / host virtual sebagai tindakan pencegahan.
Dalam acara apa pun, Anda dapat memeriksa versi yang saat ini diinstal saat ini sebagai berikut:
# httpd -v [pada sistem berbasis redhat/centos] # apache2 -v [pada sistem berbasis debian/ubuntu]Periksa versi Apache
Sebagai aturan praktis, tetap dengan metode pembaruan yang disediakan oleh manajer paket distribusi yang Anda pilih (Update yum httpd
atau Apache Apache yang aman-upgrade2
, untuk centos atau debian, masing -masing) kecuali tidak ada cara lain. Anda dapat membaca catatan rilis terbaru di bagian Dokumentasi Apache di situs web Proyek Server Apache HTTP.
Kiat #2: Jika Anda menggunakan kernel yang lebih tua dari 2.4, pertimbangkan untuk meningkatkan sekarang
Mengapa? Versi kernel 2.4 dan di atas memiliki panggilan sistem kernel sendFile diaktifkan secara default. Itu, pada gilirannya, memfasilitasi transfer file jaringan berkinerja tinggi (yang diinginkan dalam konteks komunikasi server-klien web) dan memungkinkan Apache untuk memberikan konten statis lebih cepat dan dengan pemanfaatan CPU yang lebih rendah dengan melakukan operasi baca dan mengirim operasi simultan dan mengirim operasi simultan secara simultan.
Anda dapat melihat kernel yang saat ini diinstal saat ini dengan:
# uname -r
dan bandingkan dengan kernel stabil terbaru di www.inti.org (4.3 pada saat penulisan ini).
Periksa versi kernel LinuxMeskipun ini adalah proses yang tidak ditujukan untuk pemula, meningkatkan kernel Anda adalah latihan yang menarik untuk mempelajari lebih lanjut tentang internal Linux.
Kiat #3: Pilih Modul Multi-Pemrosesan (MPM) yang paling cocok untuk kasus Anda
Dalam praktek, MPM Perluas fungsionalitas modular Apache dengan memungkinkan Anda memutuskan cara mengkonfigurasi server web untuk mengikat port jaringan pada mesin, menerima permintaan dari klien, dan menggunakan proses anak -anak (dan utas, sebagai alternatif) untuk menangani permintaan tersebut.
Dimulai dengan versi 2.4, Apache menawarkan tiga MPM berbeda untuk dipilih, tergantung pada kebutuhan Anda:
- Itu
Prefork
MPM menggunakan banyak proses anak tanpa threading. Setiap proses menangani satu koneksi pada satu waktu tanpa membuat utas terpisah untuk masing -masing. Tanpa terlalu banyak detail, kami dapat mengatakan bahwa Anda akan ingin menggunakan MPM ini hanya saat men-debug aplikasi yang menggunakan, atau jika aplikasi Anda perlu menangani, modul non-thread-aman seperti mod_php. - Itu
pekerja
MPM menggunakan beberapa utas per proses anak, di mana setiap utas menangani satu koneksi sekaligus. Ini adalah pilihan yang baik untuk server lalu lintas tinggi karena memungkinkan lebih banyak koneksi bersamaan ditangani dengan lebih sedikit RAM daripada dalam kasus sebelumnya. - Akhirnya,
peristiwa
MPM adalah MPM default di sebagian besar instalasi Apache untuk versi 2.4 ke atas. Ini mirip dengan pekerja MPM karena juga menciptakan banyak utas per proses anak tetapi dengan keuntungan: itu menyebabkan Berusaha agar hidup atau menganggur Koneksi (sementara mereka tetap dalam keadaan itu) untuk ditangani oleh satu utas, sehingga membebaskan memori yang dapat dialokasikan ke utas lain. MPM ini tidak cocok untuk digunakan dengan modul non-thread-aman seperti mod_php, untuk itu pengganti seperti itu Php-fpm harus digunakan sebagai gantinya.
Untuk memeriksa MPM Digunakan oleh instalasi Apache Anda, Anda dapat melakukannya:
# httpd -v
Gambar di bawah ini menunjukkan bahwa server web khusus ini menggunakan Prefork MPM.
Periksa Apache MPMUntuk mengubah ini, Anda perlu mengedit:
#/etc/httpd/conf.modul.D/00-mpm.Conf [On Redhat/Centos Systems] #/etc/apache2/mods-Available/.memuat [pada sistem berbasis debian/ubuntu]
Dimana bisa mpm_event, mpm_worker, atau mpm_prefork.
dan uncomment garis yang memuat modul yang diinginkan seperti itu:
Modul LoadModule mpm_event_module/mod_mpm_event.Jadi
Catatan: Untuk membuat acara MPM berfungsi di Debian, Anda mungkin harus menginstal libapache2-Mod-fastcgi Paket dari repositori yang tidak bebas.
Selain itu, untuk centos yang Anda perlukan php-fpm (bersama fcgi Dan mod_fcgid) sedangkan di debian itu disebut php5-fpm (bersama Apache2-mpm-Event).
Terakhir, tetapi tidak kalah pentingnya, restart server web dan yang baru diinstal php-fpm (atau php5-fpm) melayani:
Di redhat/centos
# Systemctl restart httpd php-fpm && systemctl mengaktifkan httpd php-fpm
Di debian/ubuntu
# Systemctl Restart APACHE2 PHP5-FPM && SystemCTL Aktifkan APACHE2 PHP5-FPM
Meskipun Anda dapat mengatur Apache untuk menggunakan MPM tertentu, konfigurasi itu dapat ditimpa dengan basis host per-virtual dengan cara yang sama seperti yang ditunjukkan sebelumnya.
Cukup jatuhkan tag yang sesuai ke dalam file konfigurasi untuk setiap host virtual dan Anda siap untuk pergi - tetapi pastikan Anda menggunakan satu dan hanya satu mpm per vhost.
Akhirnya, harap dicatat bahwa terlepas dari distribusi yang Anda pilih, php-fpm bergantung pada implementasi Fastcgi, Itulah alasan mengapa saya merekomendasikan instalasi paket tambahan sebelumnya.
Untuk detail dan contoh lebih lanjut tentang php-fpm Dan bagaimana itu bisa seiring dengan acara MPM meningkatkan kinerja Apache, Anda harus merujuk pada dokumentasi resmi.
Inilah yang saya lihat setelah mengubah MPM default dari prefork ke acara di kotak yang sama yang ditunjukkan pada gambar sebelumnya:
Pilih Modul Apache MPMDi dalam Centos 7, Anda perlu memastikan bahwa http Dan https Layanan diaktifkan melalui firewall, dan bahwa antarmuka jaringan ditambahkan dengan benar ke zona default.
Misalnya:
# firewall-cmd --zone = internal --add-interface = tun6to4 # firewall-cmd --zone = internal --add-interface = tun6to4 --permanent # firewall-cmd --set-default-zone = internal # firewall # -cmd --add-service = http # firewall-cmd --add-service = https # firewall-cmd --add-service = http --permanent # firewall-cmd --add-service = https --permanent # firewall -cmd --eload
Alasan mengapa saya meningkatkan ini adalah karena saya baru -baru ini mengalami masalah di mana pengaturan konfigurasi firewalld default di cloud VPS dicegah php-fpm dan Apache dari memproses file php.
Sebagai tes dasar (saya yakin Anda dapat memikirkan yang lebih rumit atau stres), saya akan membuat file PHP yang memeriksa keberadaan file lain bernama tes.php
Di direktori yang sama dari dua server 7 centos 7 dengan karakteristik dan beban perangkat keras yang sama tetapi dengan MPM yang berbeda. Salah satunya akan menggunakan acara dan yang lain akan menggunakan Prefork:
Ini adalah kode PHP yang saya simpan ke dalam file bernama Checkiffileexists.php
:
Kemudian kami akan menjalankan alat Benchmark Apache (AB) dengan 200 permintaan simultan sampai 2000 Permintaan selesai:
# ab -k -c 100 -n 2000 localhost/checkiffilexists.php
Mari kita jalankan tes dan bandingkan hasilnya. Perhatikan statistik kinerja:
Pengujian beban kinerja ApacheSeperti yang Anda lihat, kinerja server dengan acara sangat unggul Prefork mitra dalam setiap aspek tes ini.
Kiat #4: Alokasikan RAM dengan bijak untuk Apache
Mungkin item perangkat keras paling kritis yang harus diperhitungkan adalah jumlahnya Ram dialokasikan untuk setiap proses Apache. Meskipun Anda tidak dapat mengontrol ini secara langsung, Anda dapat membatasi jumlah proses anak melalui MaxRequestWorkers Petunjuk (sebelumnya dikenal sebagai MaxClients di Apache 2.2), yang akan membatasi penggunaan RAM oleh Apache. Sekali lagi, Anda dapat menetapkan nilai ini berdasarkan per host atau per host virtual.
Untuk melakukan ini, Anda harus mencatat jumlah rata -rata RAM yang digunakan oleh Apache, kemudian kalikan dengan jumlah MaxRequestWorkers, Dan itu adalah jumlah memori yang akan dialokasikan untuk proses Apache. Satu hal yang Anda tidak pernah ingin server web Anda lakukan adalah mulai menggunakan swap, karena itu akan secara signifikan mengurangi kinerjanya. Dengan demikian, Anda harus selalu menjaga penggunaan ram oleh Apache dalam batas yang Anda mampu dan tidak pernah bergantung pada pertukaran untuk itu.
Misalnya, blok berikut akan membatasi jumlah klien simultan 30. Jika lebih banyak klien mencapai host, mereka mungkin mengalami penundaan atau kegagalan sesaat yang dapat dengan mudah diselesaikan dengan menyegarkan browser. Meskipun ini dapat dianggap tidak diinginkan, lebih sehat untuk server dan dalam jangka panjang, terbaik untuk situs Anda juga.
Anda dapat menempatkan blok ini di dalam /etc/httpd/conf/httpd.conf
atau /etc/apache2/apache2.conf
, tergantung apakah Anda menggunakan centos atau debian.
Harap dicatat bahwa prinsip yang sama berlaku untuk semua MPM - Saya menggunakan acara di sini untuk melanjutkan konsep yang diuraikan dalam tip sebelumnya:
Starterver 3 minsparethreads 25 maxsparethreads 75 threadlimit 64 threadsperchild 25 maxrequestworkers 30 maxconnectionperchild 1000
Bagaimanapun, sangat disarankan agar Anda merujuk ke Apache 2.4 dokumen untuk melihat arahan mana yang diizinkan untuk MPM pilihan Anda.
Kiat #5: Ketahui Aplikasi Anda
Sebagai aturan praktis, Anda tidak boleh memuat modul apache apa pun yang tidak sepenuhnya dibutuhkan untuk aplikasi Anda berfungsi. Ini akan membutuhkan setidaknya pengetahuan keseluruhan tentang aplikasi yang berjalan di server Anda, khususnya jika Anda seorang administrator sistem dan ada tim lain yang bertanggung jawab atas pengembangan.
Anda dapat mencantumkan modul yang saat ini dimuat dengan:
# httpd -m [pada sistem berbasis redhat/centos] # apache2ctl -m [pada sistem berbasis debian/ubuntu]
Untuk membongkar / menonaktifkan modul di Centos, Anda perlu mengomentari garis yang dimulai LoadModule (Baik di file konfigurasi utama atau di yang tambahan di dalamnya /etc/httpd/conf.modul.D.
Di samping itu, Debian menyediakan alat yang dipanggil a2dismod untuk menonaktifkan modul dan digunakan sebagai berikut:
# A2DISMOD MODULE_NAME
Untuk mengaktifkannya kembali:
# A2Enmod module_name
Dalam kedua kasus tersebut, ingatlah untuk memulai ulang Apache agar perubahan berlaku.
Ringkasan
Dalam artikel ini kami telah meninjau 5 tips Itu akan membantu Anda menyetel server web Apache dan meningkatkan kinerjanya. Selain itu, Anda harus ingat bahwa optimasi dan kinerja tanpa keamanan tidak ada gunanya, jadi Anda mungkin ingin merujuk ke Install Mod_PagesPeed untuk meningkatkan kinerja server web dan artikel Tips Pengerasan Apache di TecMint.com juga.
Karena kami tidak dapat secara memadai membahas semua aspek topik ini dalam artikel ini, mungkin Anda akan memikirkan ide -ide lain yang ingin Anda bagikan dengan seluruh komunitas. Jika demikian, jangan ragu untuk memberi tahu kami menggunakan formulir komentar di bawah ini.
- « Menyiapkan Openerp (ODOO) 9 dengan Nginx di RHEL/CentOS dan Debian/Ubuntu
- 25 aturan firewall ptable yang berguna yang harus diketahui oleh setiap administrator linux »