Permintaan mulai layanan diulang terlalu cepat, menolak untuk memulai batas

23

Saya memiliki layanan systemd yang menampilkan kesalahan berikut service start request repeated too quickly, refusing to start

Saya mengerti bahwa layanan ini dikonfigurasi untuk memulai kembali pada kegagalan dan itu restart lagi dan lagi. Tetapi kapan tepatnya ia menolak untuk memulai kembali? Apakah ada batasan atau angka yang mendefinisikannya?

Terlebih lagi, apa too quicklysebenarnya yang dimaksud, apakah itu batas jumlah restart dalam periode waktu tertentu?

Vikas Tiwari
sumber

Jawaban:

26

Batas default adalah untuk memungkinkan 5 restart dalam periode 10 detik. Jika suatu layanan melampaui ambang batas itu karena Restart=opsi konfigurasi dalam definisi layanan, itu tidak akan mencoba untuk memulai lebih jauh lagi.

Tingkat dikonfigurasi dengan StartLimitIntervalSec=dan StartLimitBurst=pilihan danRestart= kontrol pilihan ketika systemd mencoba untuk me-restart layanan.

Info lebih lanjut di man systemd.unitdan man systemd.service.

Kemudian gunakan systemctl daemon-reloaduntuk memuat ulang konfigurasi unit.

Sven
sumber
3
Terima kasih @ven. Di mana konfigurasi ini didefinisikan?
Vikas Tiwari
Dalam file layanan. The StartLimit...opsi mungkin tidak berada di sana dan hanya menggunakan default (5 restart di 10 detik).
Sven
Apakah nilai default ditulis dalam beberapa file konfigurasi lainnya?
Vikas Tiwari
3
Default dapat dikonfigurasi, misalnya /etc/systemd/system.confdengan opsi DefaultStartLimitIntervalSec(dan serupa). Namun, ini sering tidak disetel dan standar kompilasi-in digunakan. Lihat man systemd-system.
Sven
@ Bahkan Di mana file layanan?
Pengguna
2

Perlu dicatat bahwa beberapa kesalahan tampaknya menyebabkan kesalahan ini, sedangkan penyebabnya berbeda.

Saya berkomentar bantime default dan memasukkan inline alternatif **bantime = 7200 #3600**

Saya juga menambahkan bagian baru [sasl] , yang termasuk nama filter yang telah berubah dari yang diberikan dalam artikel yang saya ikuti.

Alih-alih salah pada salah satu dari itu, fail2ban menolak untuk memulai kembali, memberikan

permintaan mulai layanan diulang terlalu cepat, menolak memulai kesalahan

Hanya ketika saya berkomentar di bagian [sasl], saya mendapatkan kesalahan yang merujuk pada bantime yang tidak valid, dari mana saya mengumpulkan bahwa itu tidak dapat mengatasi komentar sebaris.

Ketika saya memperbaikinya dan membatalkan komentar bagian [sasl] baru, saya mendapatkan kesalahan bahwa filter tidak ditemukan. Mengganti filter dengan nama yang benar menghasilkan reload yang gagal seperti yang diharapkan.

Jadi, jika Anda melakukan perubahan dan mendapatkan kesalahan ini, pastikan Anda menghapus perubahan dan masih mendapatkan kesalahan yang sama sebelum mencoba memperbaiki gejala.

MickG
sumber
0

Salah satu cara cepat dan kotor yang baru saja saya gunakan untuk masalah yang sama ini adalah saya membuat skrip bash wrapper yang tidur sehingga layanan tidak dimulai secepat. Bekerja untuk saya karena saya tidak perlu restart segera ..

/root/sleep_and_start_autossh.sh

    /bin/bash -e
    sleep 200
    /usr/bin/autossh args...

/etc/systemd/system/autossh.service

    StartLimitIntervalSec=120 # this didn't seem to do much for me.
    #ExecStart=/usr/bin/autossh args ...
    ExecStart=/root/sleep_and_start_autossh.sh
deploycat
sumber
Anda harus menurunkan StartLimitIntervalSec untuk menghindari pelambatan, atau mengaturnya ke 0 untuk menonaktifkan. Baca dokumentasi systemd.
Vladimir Panteleev
0

Anda tidak menentukan layanan mana yang gagal memulai dengan kesalahan ini.

Saya punya masalah dengan ini fail2ban, dan seperti dalam jawaban MickG , kesalahan itu sebenarnya dalam konfigurasi fail2ban saya, dan tidak ada hubungannya dengan konfigurasi layanan systemd.

Dengan fail2ban, solusinya adalah memulainya

fail2ban-client -x start

yang akan menampilkan pesan kesalahan terperinci. Untuk beberapa alasan, ketika menggunakan systemctl start fail2bankesalahan nyata hilang dan tidak dapat ditemukan di log apa pun.

Setelah kesalahan konfigurasi diperbaiki, layanan dapat kembali dihentikan atau (kembali) dimulai dengan systemd.

mivk
sumber