Itu benar-benar tergantung pada beban kerja Anda.
untuk L bagian
- dapatkan banyak memori,
- jika Anda bisa lebih dari 4GB, pergi 64bit.
- untuk partisi di mana konten Anda, log dan data MySQL menggunakan opsi mount: noatime, nodiratime.
- menggunakan drive fisik / set serangan terpisah, idealnya menyimpan data SQL, log, konten yang Anda layani - masing-masing pada spindle terpisah.
untuk Sebuah bagian dari tumpukan Anda - baik mungkin Anda ingin menggantinya sepenuhnya dengan nginx atau lighthttpd , atau mungkin hanya meninggalkan Apache untuk konten dinamis dan memiliki server terpisah (seperti dua atau mathopd ) untuk konten statis. Lihatlah di sini untuk opsi lainnya. Jika Anda akan menjalankan kedua Apache dan server lain pada kotak yang sama, alamat IP kedua akan berguna. Untuk mengurangi latensi untuk pengguna akhir gunakan http / 1.1 dengan tetap-hidup. Pertimbangkan untuk menggunakan CDN untuk konten statis.
untuk bagian M dari lampu Anda - lihat mysqlperformanceblog . dari atas kepala saya:
- catat permintaan lambat,
- berikan memori yang cukup,
- pertimbangkan untuk menggunakan innodb.
- jika Anda memiliki banyak teks untuk dicari - gunakan sphinx dan memiliki pekerjaan batch yang membangun kembali indeks.
- pertimbangkan untuk membunuh kueri yang berjalan lebih lama dari XYZ detik. Lebih baik mengacaukan 1% pengguna daripada membuat seluruh situs turun pada waktu puncak. Tapi itu sangat tergantung jika Anda memproses transaksi tunai atau menunjukkan gambar yang bagus.
- gunakan memcached jika Anda bisa, untuk men-cache hasil dari query SQL yang lebih 'mahal'. Ingatlah untuk membatalkan cache ketika Anda mengubah konten SQL. Di sisi lain, saya memiliki beberapa situs di mana semua data cocok di memori dengan nyaman dan untuk itu MySQL sangat cepat dan tidak perlu cache tambahan.
untuk P
- mengatur batas waktu eksekusi untuk skrip.
- pertimbangkan untuk menggunakan beberapa cache akselerator / opcode PHP . Saya cukup puas dengan xcache , tetapi saya tidak menggunakannya sekarang.
- jika Anda memiliki pemrosesan intensif CPU - hasil cache dan menyimpannya dalam SQL atau memcached
Bukan tip kinerja yang sesungguhnya, tetapi lakukan pencadangan di luar kantor. Betulkah.
Saya sangat menyarankan memisahkan MySQL dan Apache / PHP pada dua mesin yang berbeda.
Sebagai contoh, saya punya satu mesin (C2D E6600) yang selalu melonjak ke 2.0 dan di atas rata-rata beban. Saya menempatkan MySQL pada mesin kedua (P4C 3Ghz) dan setelah itu kedua rata-rata beban tidak naik di atas 0,2-0,3. Jadi saya beralih dari situs yang sangat lambat ke situs yang cepat dengan dua server yang memiliki banyak margin kinerja.
sumber
Untuk bagian P, Anda bisa mempertimbangkan caching opcode dengan mis . APC . Kita juga bisa mempertimbangkan mod_fastcgi dengan php daripada mod_php default.
sumber