LAMP pada Raspberry Pi 2 - kemampuan ARM CPU + USB
Saya akan segera melakukan reservasi, tujuannya bukan untuk mencari tahu kemampuan maksimum sistem, tetapi untuk mengetahui kinerja mendasar dari mikrokomputer modern sebagai server web lengkap dan membantu mengevaluasi daya saing relatif terhadap hosting bersama. Karenanya, artikel ini tidak membahas masalah pengoptimalan dan mempelajari beban maksimum yang diizinkan. Sebagai gantinya, percobaan dilakukan di situs yang ada dengan pengunjung nyata.pengantar
Mungkin, banyak yang terbiasa dengan mikrokomputer dari keluarga yang dapat dimakan (Raspberry, Banana, Orange ...) berpikir tentang memperluas jangkauan penggunaannya. Awalnya dirancang untuk sistem rumah pintar dan robot, mereka menjadi lebih cepat dan lebih cepat dengan tetap mempertahankan ukuran. Konsumsi daya yang rendah dengan daya prosesor yang meningkat menjadikannya menarik untuk digunakan sebagai server web. Mari kita pilih model yang cocok untuk ini.Mengapa Raspberry Pi 2 model B?
Karena titik terlemah dari sistem tersebut dari sudut pandang hosting adalah prosesor, yang memiliki kinerja relatif sangat rendah (lebih lanjut tentang itu nanti), kami akan mencoba untuk mengatur server web pada opsi anggaran, tetapi, yang, bagaimanapun, dapat berubah menjadi cukup kuat untuk tugas kami adalah Raspberry Pi 2 model B. Ia memiliki prosesor 4-core yang beroperasi dalam mode normal tanpa pendinginan pada 900 Mhz dan kemampuan untuk mengubah frekuensi ini dari 700 menjadi 1200 Mhz. Kami tidak akan menaikkan frekuensi jam, kami hanya mencatat bahwa untuk "overclocking" Anda akan memerlukan radiator dan, mungkin, kipas. Karena kebetulan bahwa saat ini Raspberry Pi 2 model B memiliki prosesor paling produktif di antara "teman sekelas", kami memilihnya untuk pengujian.Fitur teknis dari platform yang dimaksud
CPU
Kami memiliki prosesor yang tidak biasa, keluarga RISC. Singkatnya, kita dapat mengatakan bahwa seperangkat instruksi untuk prosesor semacam itu jauh lebih kecil daripada yang "biasa", tetapi menjalankan perintah sederhana dengan sangat cepat. Tetapi untuk menjalankan instruksi yang kompleks, perintah sederhana seperti itu perlu banyak. Karena itu, jam lebih banyak siklusnya. Jadi, jika bagi siapa pun yang 4 core 900 Mhz masing-masing lebih dari cukup untuk server web, maka Anda harus membuat amandemen - Broadcom BCM2836 quad core Cortex A7 untuk tugas kami tidak akan lebih cepat daripada Pentium 300-400 Mhz yang lama. Benar, 6 kali menyalip model single-core sebelumnya pada Raspberry Pi, dan 1,9 kali di atas teman sekelas dual-core pada Banana Pi M2 (yang, meskipun diiklankan dengan kehadiran SATA dan ethernet gigabit, jauh lebih tidak cocok untuk server web karena prosesornya. )Justru karena lambatnya prosesor sentral kami mengamati rekor konsumsi mikrokomputer yang rendah. Menurut data yang tersedia, Raspberry Pi mengkonsumsi 2 hingga 3 watt, 4 watt pada beban puncak, 1 watt saat idle. Nah, rata-rata 2-3 watt (5V, 0,4-0,6A) untuk seluruh sistem, dengan pengecualian media penyimpanan daya, adalah sesuatu yang layak diperjuangkan di bidang web hosting perusahaan atau rumah, yang dapat membuatnya menguntungkan dengan ekonomi sudut pandang.apa yang bisa membuatnya menguntungkan secara ekonomi.apa yang bisa membuatnya menguntungkan secara ekonomi.Penyimpanan
Memori yang digunakan bukan yang tercepat, melainkan DDR2, tetapi ada jumlah memori yang cukup - 1GB. Saya harus mengatakan bahwa ini adalah jumlah yang baik untuk server web biasa yang menjalankan Linux.Antarmuka jaringan
Antarmuka jaringan 100 megabita cukup untuk transfer data. Kita tidak perlu apa-apa lagi - subsistem penyimpanan informasi dan prosesor tidak bisa mengatasi dengan beban berat.Penyimpanan data
Kami beralih ke poin yang sangat menarik - pembaca kartu bawaan memungkinkan sistem untuk melakukan booting hanya darinya (kecuali jika Anda mengarahkan bootloader ...), dan ini dalam situasi normal membatasi pilihan pembawa utama ke kartu micro SD. Berita baiknya adalah bahwa hari ini mereka sudah dapat memiliki volume yang signifikan dan bekerja dengan cepat. Meskipun sudah ada kekurangan - kita tidak mungkin ingin menyimpan file situs web, database, swap dan log di dalamnya, untuk menghindari operasi yang lambat dan pengurangan prematur dari kehidupan operator. Untuk melakukan ini, kita akan memiliki media lain di bus USB. Pendekatan ini tidak hanya akan meningkatkan kinerja sistem, tetapi juga memberikan keuntungan modularitas - mudah untuk mengganti media dengan yang cadangan dan membuat cadangan seluruh gambar. Pertanyaannya adalah apa sebenarnya yang ingin kita gunakan sebagai media eksternal - disk SSD, HDD, atau kartu memori cepat.Di sini, semua orang memutuskan sendiri, banyak tergantung pada sifat dari situs yang dihosting. Harus diingat bahwa Raspberry Pi 2 menggunakan standar USB 2.0, yang membatasi subsistem file kami dalam kecepatan transfer data.Dalam contoh ini, sebagai perangkat eksternal, kami akan mempertimbangkan opsi yang relatif lambat untuk merekam - ini adalah pembaca kartu USB yang terhubung dengan kartu SD format penuh Lexar Professional, yang memungkinkan Anda untuk merekam data dengan kecepatan hanya sekitar 15Mb / s dengan koneksi ini. Meskipun (dalam kasus umum), kecepatan media di atas 100 megabit untuk membaca dan menulis akan menjadi tidak penting bagi kami, karena komunikasi dengan dunia luar dibatasi oleh angka ini. Saat menggunakan subsistem disk, Anda harus memikirkan konsumsi daya mereka. Winchester 2.5 "mengkonsumsi ~ 5 watt dan mungkin akan membutuhkan catu daya terpisah. Anda juga harus ingat tentang organisasi spesifik input-output ke Raspberry melalui USB, jelas, kami memiliki satu hambatan lagi:
Jadi, media uji:" Internal ": MicoSD 8Gb kelas 10Eksternal: SD 32Gb kelas 10+ (UHS)Pemasangan dan komposisi LAMP
Sistem harus sederhana, tetapi memiliki fungsionalitas penuh. Oleh karena itu, satu persyaratan tidak lebih, tetapi hanya Apache yang akan bersembunyi di balik Nginx, karena memori memungkinkan.sistem operasi
Minibian diinstal pada media "internal" dari gambar 2015-02-18-wheezy-minibian.img.Ini adalah Debian 7.8 sebagai minimum untuk Raspberry. Kami membuat reservasi, dalam repositori standar mereka mengharapkan PHP tidak lebih tinggi dari 5.5 dan Apache tidak lebih tinggi dari 2.2. Ini bukan pembatasan yang menjengkelkan, tetapi untuk artikel ini bermanfaat untuk memeriksa kemungkinan menggunakan versi terbaru. Untuk menginstal PHP 5.6.x dan Apache 2.4.x, yang tidak termasuk dalam repositori standar, saya harus mengubah sumber untuk versi 8 Raspbian, sistem setelah peningkatan apt-get mulai memiliki versi 8.0.Apache
Versi 2.4.10 (Raspbian). Gzip diaktifkan, semua modul yang paling umum digunakan dari distribusi standar terhubung, termasuk mod_rewrite, mod_cache ..., tidak termasuk yang diaktifkan secara default.Php
5.6.12-0 + deb8u1 (cli). Berjalan di Apache sebagai prefork. Ada php-curl, php-gd dan perpustakaan populer lainnya.MySQL
5.5.44-0 + deb8u1 - (Raspbian).Nginx
Nginx / 1.6.2. Nginx bertanggung jawab untuk statika. Termasuk kompresi Gzip.Biarkan saya mengingatkan Anda bahwa semua log ditulis ke media eksternal, ada database MySQL, swap tidak dinonaktifkan, tetapi kosong untuk seluruh waktu pengujian.Sebagai utilitas bantu saya menggunakan PhpMyAdmin, htop, iostat dan webmin. Exim4 diinstal, tetapi hanya untuk mengirim pesan dari formulir. Seperti yang Anda lihat, server kami cukup modern dan fungsional. Saya akan mengecewakan penggemar panel kontrol VESTA - sayangnya, pabrikan tidak mendukung prosesor ARM dan tidak akan melakukan ini dalam waktu dekat. Karena itu webmin.Pengujian
Saya tidak akan segera melakukan tes sintetis, karena mereka lebih cenderung dari bidang teori yang sangat jauh. Dalam praktiknya, semuanya sangat tergantung pada sifat situs yang dihosting, pada distribusi beban menurut waktu, pada saluran komunikasi, jumlah tampilan, waktu pengunjung ke situs ..., serta pada pengaturan. Dengan kata lain, saya mengusulkan untuk melihat apa yang sebenarnya terjadi di situs yang ada.Situs web yang diuji tidak didasarkan pada CMS apa pun, tetapi gunakan tampilan gambar dari database pada halaman dinamis (PHP), sehingga ada beban yang cukup kuat di MySQL. Tetapi tidak ada koneksi AJAX sama sekali. Karena hosting kami belum mengklaim sebagai profesional, pengujian ini dianggap cukup untuk menempatkan 16 situs aktif dengan lalu lintas rendah, di mana sekitar lima adalah sekitar 100-200 orang per hari, sisanya tidak lebih dari 50 pengunjung untuk hal yang sama. waktu. Secara total - sekitar 800-900 orang per hari, yang sebanding dalam hal beban yang dapat diterima dengan shared hosting murah. Setengah dari pengunjung jatuh pada malam hari, kunjungan utama terjadi pada 20-22 jam (~ 300 orang dalam dua jam, rata-rata 4 tampilan = 10 tampilan per menit pada ~ 700 kb masing-masing = 116 kilobyte lalu lintas per detik).Kami akan menetapkan waktu "jam sibuk" ini dan pada saat yang sama kami akan melakukan pengujian. Hanya akan ada dua jenis tes - evaluasi kinerja dengan menggunakan layanan pihak ketiga dan laporan utilitas iostat pada pekerjaan nyata.1. Waktu pembuatan dan pemuatan oleh pengguna halaman pada "jam sibuk"
Kami hanya menggunakan dua parameter utama - waktu pembuatan halaman dan waktu memuat halaman, untuk dua jenis halaman - "berat" (berat untuk prosesor, karena ada banyak gambar dari MySQL, generasi panjang) dan "ringan" (halaman PHP dinamis normal). Kami akan mengulangi setiap pengujian 10 kali untuk mengurangi kemungkinan hasil acak, dan kami juga akan menggunakan layanan yang berbeda.Biarkan saya mengingatkan Anda tentang geografi server pengujian dan tentang kemungkinan beban kerjanya. Oleh karena itu, hasil absolut dapat sangat bervariasi, ini normal. Saya melakukan pengukuran berulang dengan interupsi 5-10 menit untuk masuk ke waktu muat layanan yang berbeda. Saluran Raspberry yang diuji adalah optik gigabit, geografi adalah Siberia, 150 megabit dijamin ke Moskow. Untuk memverifikasi kemampuan server untuk melayani beberapa koneksi simultan, pengujian diluncurkan secara bersamaan di situs layanan berikut:Halaman ringan (547 kb, tanpa akses MySQL)
PingDom.com, Swedia
Waktu muat halaman (46 permintaan): minimum - 925 ms, maksimum - 1124 ms, rata-rata - 955 ms.Google PageSpeed Insights
Tidak ada keluhan tentang kecepatan.Sitespeed.ru
Total waktu pemuatan halaman 3.9-4.2, rata-rata 4.0. Waktu pembuatan halaman dari 139 hingga 157, rata-rata 145 ms. Itu sebabnya Google tidak memiliki keluhan - kami masuk ke 200 ms yang diizinkan.Halaman `Berat` (843 kb, termasuk 38 gambar 10-15 kb dari MySQL)
PingDom.com, Swedia
Waktu pemuatan halaman (85 permintaan): minimum - 946 ms, maksimum - 1001 ms, rata-rata - 973 ms.Google PageSpeed Insights
Tidak ada keluhan tentang kecepatan.Sitespeed.ru
Total waktu pemuatan halaman 5.3-4.2, rata-rata 4.0. Waktu pembuatan halaman dari 158 hingga 169, rata-rata 162 ms.2. Laporan utilitas htop
Seperti yang diharapkan, Htop menunjukkan bahwa konsumen utama waktu CPU adalah proses mysql. Mereka "makan" 98 menit dari hari terakhir waktu prosesor. Apa yang tidak mengejutkan - pertanyaan yang sering dan "berat" ke pangkalan seharusnya dari kami pada awalnya. Jika ada gambar dalam cache nginx, kita akan mendapatkan peningkatan kinerja, tetapi tes ini menarik karena memodelkan peningkatan beban pada MySQL dengan margin, yang, omong-omong, merupakan ciri khas kebanyakan CMS.3. Laporan utilitas iostat
Utilitas ini menunjukkan kecepatan baca dan tulis rata-rata pada media:1. Media (sistem) "internal" - rata-rata 0,87 kb / dt, rata-rata menulis 15,5 kb / dt (kemungkinan besar karena caching nginx, ada sesuatu untuk ditingkatkan dalam konfigurasi).2. Media "eksternal" (situs, log, basis data) - 2,4 kb / s dibaca dan 3 kb / s tulis (semuanya baik-baik saja di sini, membaca di-cache, log ditulis).4. Alokasi CPU
Distribusi waktu CPU oleh htop, pengambilan sampel - tepatnya dua hari kerja (~ 1600 pengunjung unik dilayani menurut metrik Yandex):mysql 6,8%htop 1,8%nginx 0,75%apache2 <0,3%Selama hampir sisa waktu, prosesor beristirahat.Sebagai hasilnya, kami memiliki margin besar untuk waktu prosesor bebas, margin untuk meningkatkan frekuensi prosesor, margin untuk kecepatan media perekaman. Ada banyak optimasi yang tersedia untuk mengkonfigurasi kedua program server (menempatkan cache nginx pada media yang terpisah, misalnya), dan situs itu sendiri. Semuanya - potensi bagus untuk meningkatkan produktivitas secara keseluruhan.Total
Pengunjung virtual kami menyukai kecepatan server web pada komputer mikro, terlepas dari kenyataan bahwa ada kunjungan simultan lainnya. Jadi, meskipun ada hambatan (USB dan prosesor), kami memiliki kesimpulan yang sangat jelas - server web lengkap pada Raspberry Pi 2 model B adalah nyata. Baik dalam perangkat lunak maupun dalam parameter teknis. Berdasarkan beban kerja yang sangat rendah dalam opsi yang dipertimbangkan, saya akan berasumsi bahwa dia akan dapat dengan cepat melayani setidaknya beberapa ribu pengunjung ke situs rata-rata per hari.Multiprocessing membantu untuk mengatasi permintaan lebih cepat, ada cukup memori untuk caching, transfer data melalui USB memuaskan, sehingga baby server tidak hanya dapat menghemat listrik, tetapi juga membuat lebih cepat (plus murah!) Penggantian peralatan yang gagal. Sistem semacam itu dapat membayar sendiri ketika digunakan pada jaringan perusahaan sebagai server perusahaan (server database, server web, server cadangan, berbagi file) dibandingkan dengan solusi populer lainnya. Dan tentunya menjadi alternatif hosting virtual di tangan yang tepat. Sebagai contoh, pada power supply yang tidak pernah terputus, komputer mikro yang dipasangkan dengan router dapat bekerja berjam-jam, sehingga pertanyaan tentang pemadaman listrik yang singkat (dan tidak begitu) dapat diratakan di rumah,jika situs penyedia juga memiliki UPS. Dan Anda juga dapat mengontrol listrik, memberikan perintah ke berbagai perangkat, menghubungkan kamera video dan berbagai ...Cobalah, bereksperimen, mikrokomputer - tidak hanya murah, tetapi juga tenang ... Source: https://habr.com/ru/post/id384209/
All Articles