Halo semuanya, pernahkah anda mengalami kondisi pada server MySQL dimana banyak proses yang berada dalam status sleep? . Beberapa hari yang lalu saya mengalami kondisi yang membuat operasional aplikasi web menjadi terhambat. Penumpukan proses yang berada dalam status sleep dapat meningkatkan penggunaan CPU dan sumber daya memori lainnya, sehingga memperlambat kinerja server. Proses dengan status tidur biasanya terjadi ketika sesi mysql tidak ditutup dengan benar. Banyak kasus yang dapat memicu hal tersebut, jika pada kasus di server saya yang memicu penumpukan proses status sleep adalah ketika aplikasi/program gagal mengolah data dari mysql, sehingga sesi mysql tidak dapat ditutup dengan baik dan menjadi status sleep proses. Jika hal seperti itu terjadi, kita perlu mematikan proses yang berstatus tidur. Jika tidak [secara default] proses dengan status tidur hanya akan ditutup setelah 28800 detik atau 8 jam. Untuk mempermudah, saya membuat script yang fungsinya mematikan proses sleep mysql secara otomatis yang saya jadwalkan di cronjob. Berikut cara membuatnya
1. Buat file sql untuk menghasilkan query kill mysql sleep process
Pertama-tama, kami membuat file sql untuk menghasilkan kueri untuk menghentikan proses tidur mysql, misalnya saya beri nama create_kill_query. sql [Anda bebas memberikan nama apa saja]
vim /usr/local/sbin/create_kill_query.sql
Untuk pathnya anda bisa custom dimana anda ingin meletakkannya, setelah itu isikan kode dibawah ini
select concat['KILL ',id,';'] as '# kill this' from information_schema.processlist where Command = 'Sleep' and Time > '30';
2. Buat file shellscript untuk mematikan proses tidur mysql
Kedua, buat file shellscript, misalnya saya beri nama kill_mysql_sleep_process. sh [Anda bebas memberikan nama apa pun yang Anda inginkan]
vim /usr/local/sbin/kill_mysql_sleep_process.sh
Untuk pathnya anda bisa custom dimana anda ingin meletakkannya, setelah itu isikan kode dibawah ini
#!/bin/bash USER="yourUser" PASSWORD="yourPassword" HOST="yourIpHost" cat /dev/null > /usr/local/sbin/kill_query.sql && mysql -u $USER -p$PASSWORD -h $HOST < /usr/local/sbin/check_kill_query.sql > /usr/local/sbin/kill_query.sql && cat /usr/local/sbin/kill_sleep_query.sql > /var/log/mysql_kill_sleep_query.log && mysql -u $USER -p$PASSWORD -h $HOST < /usr/local/sbin/kill_query.sql && [ echo "`date` === Sleep query has been killed" && echo "================================================"] >> /var/log/mysql_kill_sleep_query.log 2>&1_
Dalam skrip shell yang saya buat ini, saya mencatat prosesnya di log yang saya tempatkan di /var/log/mysql_kill_sleep_query.log
. Anda dapat menguji terlebih dahulu dengan menjalankan skrip shell dengan sh /usr/local/sbin/kill_mysql_sleep_process.sh
. Jika berhasil dan log sudah dibuat, Anda bisa melanjutkan ke langkah 3 untuk melampirkannya ke cronjob
3. Buat cronjob untuk dijalankan secara otomatis
Terakhir kita tinggal mengatur agar cronjob berjalan otomatis pada waktu yang kita inginkan, berikut saya berikan contoh agar cronjob berjalan otomatis setiap 30 menit sekali pada jam 08. 00 – 17. 00 setiap hari. Pertama, kita buka editor cronjob
cronjob -e
lalu jadwalkan waktu untuk menjalankan skrip shell seperti ini
*/30 08-17 * * * sh /usr/local/sbin/kill_mysql_sleep_process.sh
setelah itu simpan. Jadi setiap 30 menit sekali pada jam 8 pagi. 00 – 17. 00 cronjob akan menjalankan shellscript untuk menghentikan proses tidur mysql secara otomatis. Untuk aturan cronjob lainnya, Anda dapat membaca artikel saya tentang cronjob pada Aturan CronJob
Nah itulah sedikit informasi yang dapat saya bagikan, semoga informasi ini dapat bermanfaat, Terimakasih 😀
Penanganan sesi adalah konsep kunci dalam PHP yang memungkinkan informasi pengguna dipertahankan di semua halaman situs web atau aplikasi. Dalam posting ini, Anda akan mempelajari dasar-dasar penanganan sesi di PHP
Kami akan mulai dengan penjelasan tentang cara kerja sesi dan bagaimana kaitannya dengan cookie. Kemudian kita akan melihat beberapa cuplikan kode yang mendemonstrasikan cara bekerja dengan sesi. Anda akan belajar cara membuat dan menghancurkan sesi, dan cara mengubah variabel sesi
Cookie vs. Variabel Sesi
Tidak yakin apakah Anda memerlukan cookie atau variabel sesi? . Cookie adalah cara untuk menyimpan data tentang pengguna di komputer pengguna. Variabel sesi biasanya digunakan dalam aplikasi yang perlu melacak aktivitas pengguna. Cookie biasanya digunakan dalam aplikasi yang perlu menyimpan informasi tentang pengguna untuk satu situs
Anda juga dapat mempelajari tentang variabel sesi di postingan saya tentang penggunaan cookie di PHP
Cara Bekerja Dengan Cookie di PHP
Sajal Soni
16 Februari 2021
Apa itu Sesi di PHP?
Sesi adalah mekanisme untuk mempertahankan informasi di berbagai halaman web untuk mengidentifikasi pengguna saat mereka membuka situs atau aplikasi. Apakah Anda bertanya-tanya mengapa sesi diperlukan untuk situs web?
Protokol HTTP adalah protokol tanpa kewarganegaraan, yang berarti tidak mungkin server dapat mengingat pengguna tertentu di antara banyak permintaan. Misalnya, ketika Anda mengakses halaman web, server hanya bertanggung jawab untuk menyediakan konten halaman yang diminta. Jadi, ketika Anda mengakses halaman lain dari situs web yang sama, server web menginterpretasikan setiap permintaan secara terpisah, seolah-olah tidak terkait satu sama lain. Tidak ada cara bagi server untuk mengetahui bahwa setiap permintaan berasal dari pengguna yang sama
Diagram berikut menggambarkan protokol HTTP secara singkat
Dalam model ini, jika Anda ingin menampilkan informasi khusus pengguna, Anda harus mengautentikasi pengguna di setiap permintaan. Bayangkan jika Anda harus mengetikkan username dan password di setiap halaman yang menampilkan informasi profil Anda. Ya, itu akan merepotkan dan tidak praktis sama sekali, dan di situlah sesi muncul
Sesi memungkinkan Anda untuk berbagi informasi di berbagai halaman dari satu situs atau aplikasi—sehingga membantu mempertahankan status. Ini memungkinkan server mengetahui bahwa semua permintaan berasal dari pengguna yang sama, sehingga memungkinkan situs untuk menampilkan informasi dan preferensi khusus pengguna
Alur Masuk Dengan Sesi dan Cookie
Mari kita segera melalui alur login umum untuk sebuah situs web guna memahami apa yang terjadi di balik layar
- Seorang pengguna membuka halaman login situs web
- Setelah mengirimkan formulir login, server di sisi lain mengautentikasi permintaan dengan memvalidasi kredensial yang dimasukkan
- Jika kredensial yang dimasukkan oleh pengguna valid, server akan membuat sesi baru. Server menghasilkan nomor acak unik, yang disebut id sesi. Itu juga membuat file baru di server yang digunakan untuk menyimpan informasi khusus sesi
- Selanjutnya, id sesi diteruskan kembali ke pengguna, bersama dengan sumber daya apa pun yang diminta. Di belakang layar, id sesi ini dikirim dalam cookie _______2_______47 di header respons
- Saat browser menerima respons dari server, ia menemukan header cookie _______2_______47. Jika cookie diizinkan oleh browser, itu akan menyimpan cookie
3
47 ini, yang menyimpan id sesi yang diteruskan oleh server - Untuk permintaan selanjutnya, cookie
3
47 diteruskan kembali ke server. Saat server menemukan cookie _______2________47, server akan mencoba menginisialisasi sesi dengan id sesi tersebut. Itu dilakukan dengan memuat file sesi yang dibuat sebelumnya, selama inisialisasi sesi. Ini kemudian akan menginisialisasi variabel array super-global _______2_______52 dengan data yang disimpan dalam file sesi
Dengan cara ini, data pengguna disimpan di beberapa permintaan, dan pengguna tetap masuk selama satu sesi
Diagram berikut menggambarkan bagaimana protokol HTTP bekerja dengan sesi
Sekarang setelah Anda melihat pengantar singkat tentang cara kerja sesi, kami akan membuat beberapa contoh praktis untuk menunjukkan cara membuat dan memanipulasi variabel sesi
Cara Memulai Sesi
Pada bagian ini, kita akan membahas cara memulai sesi di PHP
Setiap kali Anda ingin berurusan dengan variabel sesi, Anda perlu memastikan bahwa sesi sudah dimulai. Ada beberapa cara untuk memulai sesi di PHP
Gunakan Fungsi 3
_53
Ini adalah metode yang paling sering Anda lihat, di mana sesi dimulai oleh fungsi _______2_______53
1