[ English | Indonesia | Deutsch | 日本語 ]
Pemecahan masalah RabbitMQ¶
Bagian ini memberikan tips untuk menyelesaikan masalah-masalah umum RabbitMQ.
Layanan RabbitMQ hang¶
Sangat umum bagi layanan RabbitMQ untuk hang ketika dinyalakan kembali atau dihentikan. Oleh karena itu, sangat disarankan agar Anda me-restart RabbitMQ secara manual pada setiap node pengontrol.
Catatan
Nama layanan RabbitMQ dapat bervariasi tergantung pada sistem operasi atau vendor Anda yang memasok layanan RabbitMQ Anda.
Restart layanan RabbitMQ pada node pengontrol pertama. Perintah service rabbitmq-server restart mungkin tidak berfungsi dalam situasi tertentu, jadi yang terbaik adalah menggunakan:
# service rabbitmq-server stop # service rabbitmq-server start
Jika layanan menolak untuk berhenti, maka jalankan perintah :command:`pkill`untuk menghentikan layanan, kemudian mulai ulang layanan:
# pkill -KILL -u rabbitmq # service rabbitmq-server start
Verifikasi proses RabbitMQ berjalan:
# ps -ef | grep rabbitmq # rabbitmqctl list_queues # rabbitmqctl list_queues 2>&1 | grep -i error
Jika ada kesalahan, jalankan perintah cluster_status untuk memastikan tidak ada partisi:
# rabbitmqctl cluster_status
Untuk informasi lebih lanjut, lihat RabbitMQ documentation.
Kembali ke langkah pertama dan coba restart layanan RabbitMQ lagi. Jika Anda masih memiliki kesalahan, hapus konten di direktori
/var/lib/rabbitmq/mnesia/
antara berhenti dan memulai layanan RabbitMQ.Jika tidak ada kesalahan, restart layanan RabbitMQ pada node controller berikutnya.
Sejak rilis Liberty, layanan OpenStack akan secara otomatis pulih dari pemadaman (outage) RabbitMQ. Anda hanya harus mempertimbangkan memulai kembali layanan OpenStack setelah memeriksa apakah fungsi heartbeat RabbitMQ diaktifkan, dan jika layanan OpenStack tidak menerima pesan dari antrian RabbitMQ.
Peringatan RabbitMQ¶
Jika Anda menerima peringatan untuk RabbitMQ, ambil langkah-langkah berikut untuk memecahkan masalah dan menyelesaikan masalah:
Tentukan dari server mana alarm RabbitMQ berasal.
Mencoba mem-boot instance nova di lingkungan yang terpengaruh.
Jika Anda tidak dapat meluncurkan sebuah instance, lanjutkan untuk memecahkan masalah.
Masuk ke masing-masing node pengontrol untuk lingkungan yang terpengaruh, dan periksa file log
/var/log/rabbitmq
untuk masalah yang dilaporkan.Cari masalah koneksi yang diidentifikasi dalam file log.
Untuk setiap node pengontrol di lingkungan Anda, lihat direktori
/etc/init.d
untuk memeriksanya berisi nova*, cinder*, neutron*, atau glance*. Juga periksa antrian pesan RabbitMQ yang tumbuh tanpa dikonsumsi yang akan menunjukkan layanan OpenStack mana yang terpengaruh. Mulai ulang layanan OpenStack yang terpengaruh.Untuk setiap node komputasi lingkungan Anda, lihat direktori
/etc/init.d
dan periksa apakah mengandung nova*, cinder*, neutron*, or glance*, Juga periksa antrian pesan RabbitMQ yang tumbuh tanpa dikonsumsi yang akan menunjukkan layanan OpenStack mana yang terpengaruh. Mulai ulang layanan OpenStack yang terpengaruh.Buka OpenStack Dashboard dan luncurkan instance. Jika instance diluncurkan, masalah teratasi.
Jika Anda tidak dapat meluncurkan instance, periksa file log
/var/log/rabbitmq
untuk masalah koneksi yang dilaporkan.Restart layanan RabbitMQ di semua node pengontrol:
# service rabbitmq-server stop # service rabbitmq-server start
Catatan
Langkah ini berlaku jika Anda telah memulai kembali hanya komponen OpenStack, dan tidak dapat terhubung ke layanan RabbitMQ.
Ulangi langkah 7-8.
Konsumsi memori manajemen database yang berlebihan¶
Sejak rilis Liberty, OpenStack with RabbitMQ 3.4.x atau 3.6.x memiliki masalah dengan database manajemen yang menggunakan memori yang dialokasikan untuk RabbitMQ. Ini disebabkan oleh pengumpulan dan pemrosesan statistik. Ketika satu node dengan RabbitMQ mencapai ambang memori, semua pertukaran dan pemrosesan antrian dihentikan hingga alarm memori pulih.
Untuk mengatasi masalah ini:
Periksa konsumsi memori:
# rabbitmqctl status
Edit file konfigurasi
/etc/rabbitmq/rabbitmq.config
, dan ubah parametercollect_statistics_interval
antara 30000-60000 milidetik. Atau Anda dapat mematikan pengumpulan statistik dengan mengatur parametercollect_statistics
menjadi "none".
Batas deskriptor file saat menskala lingkungan cloud¶
Lingkungan cloud yang diskalakan ke ukuran tertentu akan membutuhkan batas deskriptor file untuk disesuaikan.
Jalankan rabbitmqctl status untuk melihat batas deskriptor file saat ini:
"{file_descriptors,
[{total_limit,3996},
{total_used,135},
{sockets_limit,3594},
{sockets_used,133}]},"
Sesuaikan batas yang sesuai dalam file konfigurasi /etc/security/limits.conf
.