Berdasarkan laporan terbaru oleh Netcraft (perusahaan Internet terkenal yang menyediakan antara lain statistik penggunaan browser web), Apache terus menjadi server web yang paling banyak digunakan di antara situs dan komputer yang terhubung ke Internet.
Selain itu, Apache terus mengalami pertumbuhan terbesar di antara server web teratas, diikuti oleh Nginx dan IIS. Jadi, jika Anda seorang administrator sistem yang bertugas mengelola instalasi Apache, Anda perlu tahu caranya untuk memastikan server web Anda melakukan yang terbaik dari kapasitasnya sesuai dengan Anda (atau klien Anda) kebutuhan.
Pada artikel ini kita akan membahas beberapa tips yang akan membantu Anda memastikan bahwa Apache akan berjalan dengan lancar dan mampu menangani jumlah permintaan yang Anda harapkan dari klien jarak jauh.
Namun, harap diingat bahwa Apache tidak dirancang dengan tujuan untuk menetapkan catatan benchmark – tetapi, meskipun demikian, ia masih mampu memberikan kinerja tinggi di hampir semua kasus penggunaan yang mungkin Anda pikirkan dari.
Tak perlu dikatakan bahwa menginstal versi terbaru Apache mungkin adalah salah satu hal pertama yang perlu Anda pertimbangkan. Mulai 19 November 2015, versi terbaru Apache 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. Kompilasi dan petunjuk instalasi juga disediakan di sini – ingatlah bahwa jika Anda memilih metode pembaruan ini, Anda mungkin ingin mencadangkan file konfigurasi / situs / host virtual Anda saat ini sebagai tindakan pencegahan.
Bagaimanapun, Anda dapat memeriksa versi yang saat ini Anda instal sebagai berikut:
# httpd -v [Pada sistem berbasis RedHat/CentOS] # apache2 –v [Pada sistem berbasis Debian/Ubuntu]
Sebagai aturan praktis, tetap gunakan metode pembaruan yang disediakan oleh manajer paket dari distribusi pilihan Anda (yum memperbarui httpd
atau aptitude safe-upgrade apache2
, 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 HTTP Apache.
Mengapa? Versi kernel 2.4 dan di atas memiliki panggilan sistem kernel sendfile yang diaktifkan secara default. Itu, pada gilirannya, memfasilitasi transfer file jaringan kinerja tinggi (yang diinginkan dalam konteks web server-klien komunikasi) dan memungkinkan Apache untuk mengirimkan konten statis lebih cepat dan dengan penggunaan CPU yang lebih rendah dengan melakukan pembacaan dan mengirim operasi.
Anda dapat melihat kernel yang saat ini Anda instal dengan:
# unama -r.
dan bandingkan dengan kernel stabil terbaru di www.kernel.org (4.3 pada saat penulisan ini).
Meskipun ini adalah proses yang tidak ditujukan untuk pemula, memutakhirkan kernel Anda adalah latihan yang menarik untuk mempelajari lebih lanjut tentang internal Linux.
Dalam praktek, MPM memperluas fungsionalitas modular Apache dengan memungkinkan Anda memutuskan cara mengonfigurasi server web untuk mengikat ke jaringan port pada mesin, menerima permintaan dari klien, dan menggunakan proses anak (dan utas, sebagai alternatif) untuk menanganinya permintaan.
Dimulai dengan versi 2.4, Apache menawarkan tiga MPM berbeda untuk dipilih, bergantung pada kebutuhan Anda:
garpu depan
MPM menggunakan beberapa 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 ingin menggunakan MPM ini hanya saat debugging aplikasi yang menggunakan, atau jika aplikasi Anda perlu menangani, modul yang tidak aman untuk thread seperti mod_php.pekerja
MPM menggunakan beberapa utas per proses anak, di mana setiap utas menangani satu koneksi pada satu waktu. Ini adalah pilihan yang baik untuk server dengan lalu lintas tinggi karena memungkinkan lebih banyak koneksi bersamaan ditangani dengan lebih sedikit RAM daripada dalam kasus sebelumnya.peristiwa
MPM adalah MPM default di sebagian besar instalasi Apache untuk versi 2.4 dan di atasnya. Ini mirip dengan MPM pekerja karena juga membuat 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 lainnya. MPM ini tidak cocok untuk digunakan dengan modul non-thread-safe seperti mod_php, yang penggantinya seperti PHP-FPM harus digunakan sebagai gantinya.Untuk memeriksa MPM digunakan oleh instalasi Apache Anda, Anda dapat melakukan:
# httpd -V.
Gambar di bawah ini menunjukkan bahwa server web khusus ini menggunakan prefork MPM.
Untuk mengubah ini, Anda perlu mengedit:
# /etc/httpd/conf.modules.d/00-mpm.conf [Pada sistem berbasis RedHat/CentOS] # /etc/apache2/mods-available/.load [Pada sistem berbasis Debian/Ubuntu]
Di mana
dan batalkan komentar pada baris yang memuat modul yang diinginkan seperti:
LoadModule mpm_event_module modules/mod_mpm_event.so.
Catatan: Untuk membuat acara MPM bekerja di Debian, Anda mungkin harus menginstal libapache2-mod-fastcgi paket dari repositori non-bebas.
Selain itu, untuk CentOS Anda perlu php-fpm (bersama fcgi dan mod_fcgid) sedangkan di Debian disebut php5-fpm (bersama apache2-mpm-event).
Terakhir, namun tidak kalah pentingnya, restart server web dan yang baru diinstal php-fpm (atau php5-fpm) melayani:
# systemctl restart httpd php-fpm && systemctl aktifkan httpd php-fpm.
# systemctl restart apache2 php5-fpm && systemctl aktifkan apache2 php5-fpm.
Meskipun Anda dapat mengatur Apache untuk menggunakan MPM tertentu, konfigurasi tersebut dapat diganti pada a per-host virtual dasar dengan cara yang sama seperti yang ditunjukkan sebelumnya.
Cukup letakkan 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.
Terakhir, harap dicatat bahwa terlepas dari distribusi yang Anda pilih, php-fpm bergantung pada implementasi CGI cepat, itulah alasan mengapa saya merekomendasikan instalasi paket tambahan sebelumnya.
Untuk lebih jelasnya dan contoh di php-fpm dan bagaimana hal itu dapat seiring dengan acara MPM meningkatkan kinerja Apache, Anda harus merujuk ke dokumentasi resmi.
Inilah yang saya lihat setelah mengubah MPM default dari prefork menjadi event di kotak yang sama yang ditunjukkan pada gambar sebelumnya:
Di dalam CentOS 7, Anda harus memastikan bahwa http dan https layanan diaktifkan melalui firewall, dan antarmuka jaringan ditambahkan dengan benar ke zona default.
Sebagai contoh:
# 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 --muat ulang.
Alasan mengapa saya mengangkat ini adalah karena saya baru-baru ini mengalami masalah di mana default konfigurasi firewalld pengaturan di cloud VPS dicegah php-fpm dan Apache dari memproses file php.
Sebagai tes dasar (saya yakin Anda dapat memikirkan yang lebih rumit atau menegangkan), saya akan membuat file php yang memeriksa keberadaan file lain bernama tes.php
dalam direktori yang sama dari dua server CentOS 7 dengan karakteristik dan beban perangkat keras yang sama tetapi dengan MPM yang berbeda. Salah satunya akan menggunakan event dan yang lainnya akan menggunakan prefork:
Ini adalah kode php yang saya simpan ke dalam file bernama checkiffileexists.php
:
php. $namafile = 'test.php'; if (file_exists($filename)) { echo "File $filename ada"; } else { echo "File $namafile tidak ada"; }
Kemudian kita akan menjalankan Alat benchmark Apache (ab) dengan 200 permintaan simultan sampai 2000 permintaan selesai:
# ab -k -c 100 -n 2000 localhost/checkiffileexists.php.
Mari kita jalankan tes dan bandingkan hasilnya. Perhatikan statistik kinerja:
Seperti yang Anda lihat, kinerja server dengan acara sangat unggul darinya garpu depan mitra dalam setiap aspek dari tes ini.
Mungkin item perangkat keras yang paling penting untuk diperhitungkan adalah jumlah RAM dialokasikan untuk setiap proses Apache. Meskipun Anda tidak dapat mengontrol ini secara langsung, Anda dapat membatasi jumlah proses anak melalui MaxRequestWorkers direktif (sebelumnya dikenal sebagai Klien Maks di Apache 2.2), yang akan membatasi penggunaan RAM oleh Apache. Sekali lagi, Anda dapat menetapkan nilai ini per host atau per host virtual.
Untuk melakukan ini, Anda harus mencatat jumlah rata-rata RAM yang digunakan oleh Apache, lalu kalikan dengan jumlah MaxRequestWorkers, dan itu adalah jumlah memori yang akan dialokasikan untuk proses Apache. Satu hal yang Anda tidak ingin server web Anda lakukan adalah mulai menggunakan swap, karena itu akan menurunkan kinerjanya secara signifikan. Dengan demikian, Anda harus selalu menjaga penggunaan RAM oleh Apache dalam batas yang Anda mampu dan tidak pernah bergantung pada swap untuk itu.
Misalnya, blok berikut akan membatasi jumlah klien simultan untuk 30. Jika lebih banyak klien mencapai host, mereka mungkin mengalami penundaan atau kegagalan sesaat yang dapat dengan mudah diselesaikan dengan menyegarkan browser. Meskipun ini mungkin dianggap tidak diinginkan, ini lebih sehat untuk server dan dalam jangka panjang, juga terbaik untuk situs Anda.
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:
StartServers 3 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestWorkers 30 MaxConnectionsPerChild 1000.
Bagaimanapun, sangat disarankan agar Anda merujuk ke Apache 2.4 dokumen untuk melihat arahan mana yang diizinkan untuk MPM pilihan Anda.
Sebagai aturan praktis, Anda tidak boleh memuat modul Apache apa pun yang tidak benar-benar diperlukan agar aplikasi Anda berfungsi. Ini akan membutuhkan setidaknya pengetahuan keseluruhan tentang aplikasi yang berjalan di server Anda, khususnya jika Anda adalah administrator sistem dan ada tim lain yang bertanggung jawab atas pengembangan.
Anda dapat membuat daftar modul yang sedang dimuat dengan:
# httpd -M [Pada sistem berbasis RedHat/CentOS] # apache2ctl -M [Pada sistem berbasis Debian/Ubuntu]
Untuk membongkar / menonaktifkan modul di CentOS, Anda harus mengomentari baris yang dimulai dengan MuatModul (baik di file konfigurasi utama atau di file tambahan di dalamnya /etc/httpd/conf.modules.d.
Di samping itu, Debian menyediakan alat yang disebut a2dismod untuk menonaktifkan modul dan digunakan sebagai berikut:
# a2dismod module_name.
Untuk mengaktifkannya kembali:
# a2enmod module_name.
Dalam kedua kasus tersebut, ingatlah untuk me-restart Apache agar perubahan diterapkan.
Dalam artikel ini kami telah mengulas 5 tips yang akan membantu Anda menyetel server web Apache dan meningkatkan kinerjanya. Selain itu, Anda harus ingat bahwa pengoptimalan dan kinerja tanpa keamanan tidak ada gunanya, jadi Anda mungkin ingin merujuk ke instal 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 lain yang ingin Anda bagikan dengan komunitas lainnya. Jika demikian, jangan ragu untuk memberi tahu kami menggunakan formulir komentar di bawah.