Memilih mode operasi server web berdasarkan pengalaman pribadi

Artikel ini akan bermanfaat bagi orang-orang yang sudah memiliki situs mereka sendiri, atau yang berencana untuk membukanya. Artikel yang sangat menarik adalah para webmaster yang ambisius yang merasa bahwa jam terbaik dari proyek mereka akan segera tiba dan ingin bersiap untuk masuknya pengunjung halaman.

Bahkan mereka yang masih memimpikan ribuan pengguna di situs mereka, mungkin bertanya-tanya: "Berapa banyak pengguna yang akan berdiri di situs saya jika mereka masuk pada saat yang sama?" Saya segera ingat ungkapan terkenal "Habraeffect" - fenomena kegagalan situs, yang ternyata tidak siap untuk banyak klik di atasnya setelah munculnya tautan di Internet.

Misalkan situs tersebut sudah ada (atau akan segera): di mana ia bisa ditemukan? Haruskah hosting klasik atau server vps? Jika vps, yang mana dan bagaimana cara mengkonfigurasinya lebih baik? Atau mungkin tidak ada perbedaan sama sekali dan lebih mudah untuk memilih mana yang lebih murah? Dalam artikel ini, kami akan mempertimbangkan beberapa opsi dan dalam praktiknya memastikan mana yang terbaik untuk situs kami.

Kami akan bereksperimen: mengatur mode operasi server yang berbeda dan mengukur kinerja. Kami akan mensimulasikan beban di situs menggunakan layanan Loaddy.com. Di sana Anda dapat mengatur jumlah pengguna, jenis beban yang bertambah, dan grafik akan menunjukkan bagaimana server merespons mereka. Diyakini bahwa satu pengguna menghasilkan sekitar satu permintaan ke situs dalam waktu 10 detik. Sebagai situs pengujian, ambil demo toko online di cms moguta. Itu akan diisi dengan "barang" uji yang ditampilkan pada halaman utama sesuai dengan beberapa kriteria (yaitu, ketika halaman sedang dibentuk, pekerjaan sedang dilakukan dengan database, dll). Dengan satu atau lain cara, ini akan memungkinkan Anda untuk membandingkan mode di antara mereka sendiri.

Sebagai situs uji, kami akan membuat server VPS di Ubuntu. Konfigurasi ini akan menjadi [1 core, 1Gb RAM]. Kami berasumsi bahwa justru server entry-level inilah yang sebagian besar dibuat untuk proyek-proyek baru. Versi uji toko online akan tersedia di alamat ip http://130.193.44.219/

Hosting klasik juga berguna, untuk itu kami juga akan mengisi toko online yang sama untuk melakukan pengujian. Anda dapat menempuh cara kami sendiri dan melakukan tes yang sama pada proyek Anda!

Karena dalam kebanyakan kasus, bersama dengan vps, panel kontrol ditawarkan, kami akan membuat perubahan utama pada pengaturan di dalamnya. Di server vps, kami memiliki 3 mode operasinya:

  • Apache
  • Apache dalam mode CGI;
  • Nginx + php-fpm (tanpa Apache).

Tapi pertama-tama, mari kita uji hosting:

Hosting murah klasik


gambar
Hasilnya tersedia di sini .

Kesalahan muncul ketika jumlah pengunjung melebihi 50 orang. Hosting berhenti memberikan konten, namun, jika Anda pergi ke panel kontrol hosting, kita dapat melihat sesuatu seperti berikut:
Situs Anda telah dibatasi selama 24 jam terakhir. Sumber daya prosesor terbatas untuk situs Anda. Anda telah mencapai batas proses input (jumlah skrip PHP dan CGI yang dijalankan secara bersamaan, tugas terjadwal, dan sesi konsol) 126 kali.
Yah, tentu saja, hosting adalah hosting, semakin murah. Anda tentu saja dapat menemukan tarif yang akan memberikan lebih banyak opsi, tetapi Anda harus mempertimbangkan semua ini, entah bagaimana mengetahui data pasti dari pembatasan tersebut, dan masing-masing penyedia hosting.

VPS: Apache


Baris berikutnya adalah Angkatan Udara pengujian kami dengan mode Apache, yang ditawarkan secara default saat memasang panel kontrol ISP.

gambar

Hasilnya tersedia di sini .

Masalah dimulai ketika jumlah pengguna melebihi 90. Jika kita pergi ke server kami melalui ssh dan melihat pada saat itu pada daftar proses menggunakan perintah atas, diurutkan menggunakan Shift + M (dengan jumlah memori yang dikonsumsi), kita akan melihat sesuatu seperti ini:

gambar

Kami melihat bahwa proses apache2 telah berkembang menjadi banyak anak perusahaan dan mereka memakan seluruh RAM server vps kami.

Di sini Anda perlu membuat komentar kecil. Faktanya adalah bahwa secara teoritis ada mode untuk server Apache yang memungkinkan alih-alih sejumlah besar proses anak untuk setiap koneksi untuk membuat beberapa yang disebut multi-thread, masing-masing akan melayani beberapa koneksi. Mode ini disebut pekerja , tidak seperti prefork default. Tapi itu tidak mudah untuk menginstalnya, tidak mungkin untuk melakukan ini di panel seperti ISP, dan jika Anda bingung dan mencoba melakukannya melalui ssh, ternyata mematikan prefork dan menghidupkan pekerja tidak cukup, Anda masih memerlukan versi php thread yang aman. Dan jika modul seperti Zend atau IonCube digunakan, maka mereka juga harus aman. Bagaimanapun, situs PHP resmi tidak merekomendasikan pengaturan mode ini.

VPS: CGI


Mari kita lihat apa yang terjadi ketika menggunakan mode CGI. Untuk melakukan ini, Anda harus mengizinkan penggunaan PHP dalam mode CGI di panel kontrol ISP, ini dilakukan di bagian "Akun - Pengguna - Pengaturan untuk Pengguna".

gambar

Hasilnya tersedia di sini .

Sebuah gambar suram ternyata. Server menolak untuk membagikan konten dengan 55+ pengunjung, RAM sudah habis oleh proses โ€œphpโ€. Berikutnya adalah upaya untuk mengembalikan fungsionalitas, tetapi masih berakhir dengan kegagalan hampir 100%.

VPS: Nginx + PHP-FPM


Waktunya telah tiba untuk mode di mana server Apache tidak digunakan sama sekali, Nginx bekerja sebagai gantinya, dan php diproses oleh modul php-fpm. Jika Anda menggunakan panel kontrol ISP, Anda harus mengaktifkan mode ini untuk pengguna. Ini juga dilakukan di bagian "Akun - Pengguna - Pengaturan Pengguna". Selain itu, mode ini harus tersedia di bagian "Pengaturan - Fitur - Server Web (www)".

gambar

Hasilnya tersedia di sini .

Apa yang kamu butuhkan! Ketersediaan 100%, sementara kecepatan unduhan dan waktu respons server berada pada tingkat yang dapat diterima, meskipun meningkat seiring dengan meningkatnya beban. Namun demikian, server sedang mengatasinya!

Mari kita lihat tabel proses pada saat beban maksimum di server:

gambar

Kami melihat bahwa kami masih memiliki persediaan RAM yang tersedia. Dan proses anak php-fpm7.0 tidak tumbuh dalam jumlah besar, tetapi dibatasi hingga 5 kali, yang masing-masingnya melayani beberapa utas.

Yah, sepertinya "mode kemenangan" didefinisikan. Mari cari tahu berapa banyak pengunjung simultan yang dapat dilayani server kami dalam mode ini. Tapi sebelum itu kita melakukan sedikit "penyetelan". Pertama, karena apache tidak digunakan untuk operasi server seperti itu, apache dapat sepenuhnya dinonaktifkan. Kami akan melakukan ini di panel kontrol ISP di bagian "Sistem - Layanan". Kedua, kami mengubah sedikit prinsip memulai proses php-fpm. Secara default, ini dinamis. Ini berarti bahwa proses anak akan menggantung di memori bahkan ketika mereka tidak diperlukan. Pada saat yang sama, memori tidak dibebaskan, dan seiring waktu, proses ini dapat tumbuh lebih dari yang kita inginkan. Oleh karena itu, diusulkan untuk mengatur mode "ondemand" - sesuai permintaan. Dan mengatur jumlah proses anak dan batas waktu untuk mereka.

Untuk melakukan ini, Anda harus pergi ke server melalui ssh dan mendaftarkan pengaturan ini di file konfigurasi php. Ini mudah dilakukan dalam file untuk pengguna yang domainnya dibuat di ISP.

Biasanya terletak di /etc/php/7.0/fpm/pool.d

Jadi:
sudo nano /etc/php/7.0/fpm/pool.d/www-root.conf 


Kami melihat di sana secara default pengaturan berikut:

 [www-root] pm = dynamic pm.start_servers = 1 pm.min_spare_servers = 1 pm.max_children = 5 pm.max_spare_servers = 5 

Untuk mengaktifkan mode ondemand, Anda perlu mengganti ini dengan:
 pm = ondemand pm.max_children = 5 pm.process_idle_timeout = 10s 

Dan restart php-fpm dengan perintah

 sudo service php7.0-fpm restart 

Setelah itu, proses php-fpm7.0 akan dibuat sesuai permintaan (jika ada beban), jumlah maksimumnya akan = 5, dan setelah 10 detik downtime proses akan mati, membebaskan RAM.

Untuk berjaga-jaga, kami akan menjalankan pengujian kami lagi untuk memastikan bahwa semua aktivitas amatir ini tidak mempengaruhi kinerja situs web menjadi lebih buruk:

gambar

Hasilnya tersedia di sini .

Sekarang mari kita jalankan Loaddy dengan banyak pengunjung untuk memahami berapa banyak koneksi yang dapat ditangani oleh server kami:

gambar

Hasilnya tersedia di sini .

Berita baiknya adalah semua permintaan diproses, meskipun dengan penundaan besar, dengan jumlah besar per detik. Waktu respons server hampir 10 detik dengan hit 190+. Tapi mari kita ingat grafik mode apache, di mana kita sudah mendapatkan respons server 4 detik dengan 80+ pengguna, sedangkan dalam mode php-fpm, kelambatan serupa diamati dengan 130 permintaan yang kami alokasikan khusus kursor pada grafik di atas.
Tapi ini VPS yang sama.

Tabel proses teratas di akhir tes (dengan 200 pengguna):

gambar

Perhatikan bahwa setelah pengujian, memori yang digunakan oleh pfp-fpm dibebaskan:

gambar

Jadi server kami siap untuk memuat baru.

Harus diingat bahwa situs beroperasi dalam mode nginx + php-fpm, yang berarti apache2 tidak digunakan dalam pekerjaan dan, sebagai hasilnya, .htaccess tidak digunakan. Ini mungkin tampak tidak nyaman, tetapi ini adalah pilihan tercepat yang memungkinkan, dan mesin pencari memberi peringkat situs yang bekerja lebih cepat.

Kesimpulan


Sebagai kesimpulan, satu lagi poin kecil: Jika Anda mengkonfigurasi semua yang ada di server yang Anda inginkan dan memutuskan untuk melepaskan panel kontrol ISP, atau Anda telah kehabisan lisensi untuk itu, harap dicatat bahwa proses "inti" darinya masih akan menggantung di server Anda. Setelah berbulan-bulan, itu dapat tumbuh, jadi lebih baik untuk "membunuh" dan menghapusnya dari startup dan crona.

Jika Anda ingin menguji situs secara independen menggunakan Loaddy atau metode lain, tersedia di http://130.193.44.219/

Source: https://habr.com/ru/post/id434198/


All Articles