Layanan Windows tidak otomatis mulai setelah reboot?

10

Kami memiliki beberapa layanan Windows yang ditulis dalam .NET. Mereka memulai dengan baik secara manual dalam mmc layanan, tetapi meskipun diatur ke Otomatis, mereka tidak pernah memulai ketika menyalakan (atau me-reboot) mesin.

Perbarui Dalam log peristiwa, alih-alih melihat "xyz mulai", di samping semua layanan lain dimulai, saya hanya melihat "Layanan xyz memasuki keadaan berhenti." dan kesalahan terpisah yang mengatakan "Batas waktu (30000 milidetik) tercapai saat menunggu respons transaksi dari layanan slsvc.".

Jika saya memulai secara manual, maka saya mendapatkan entri normal di log peristiwa seperti yang diharapkan, dan semuanya baik-baik saja - sampai tambalan Pembaruan Windows berikutnya yang memaksa reboot dan semua layanan mati lagi.

Ada ide? Saya sudah mencoba mengaturnya ke Delayed Start tanpa perbedaan yang jelas.

James Crowley
sumber
Saya pernah memiliki masalah yang sangat mirip dengan beberapa tugas yang dijadwalkan, yang akhirnya saya temukan saya bisa menciptakan kembali dengan mengubah nama pengguna menjalankan tugas setelah dibuat. Saya menemukan bahwa saya dapat dengan mudah memperbaiki masalah hanya dengan menghapus dan menciptakan kembali tugas-tugas. Ini jelas layak pendekatan yang serupa dengan ini - cobalah menghapus layanan dan membuatnya kembali. Ini dapat membantu jika Anda tidak yakin bagaimana melakukannya. FYI, masalah tugas yang dijadwalkan tidak terjadi lagi, saya kira beberapa pembaruan pada titik tertentu memperbaikinya.
DaveRandom
Saya bertanya-tanya apakah mereka gagal memulai karena mereka bergantung pada layanan lain (yang belum dimulai). Apakah Anda dapat melihat kegagalan memulai layanan dalam log sistem?
Newmanth
@DaveRandom instal ulang benar-benar terjadi setiap kali kami menggunakan versi baru, sehingga tampaknya tidak menghapus / menambahkan menyelesaikan masalah sayangnya
James Crowley
@newmanth pertanyaan diperbarui dengan beberapa perincian baru - ternyata ada entri log peristiwa yang saya lewatkan
James Crowley
Saya perhatikan dalam komentar Anda untuk jawaban Rob bahwa .NET adalah satu-satunya ketergantungan. Apakah Anda tahu jika pengembang menggunakan API pihak ketiga dalam pengembangan layanan? Jika demikian, mungkin ada beberapa mekanisme perizinan yang diblokir?
newmanth

Jawaban:

3

Ada perbaikan untuk itu. Lihat: http://support.microsoft.com/kb/922918

Masalahnya, layanan mungkin memerlukan ldap atau akses jarak jauh lain dan mengalami penundaan karena ini. Ini terutama dapat terjadi ketika server mulai. Dengan memperpanjang penundaan, Anda dapat memastikan layanan akan dimulai.

Tentu lebih baik memecahkan masalah mengapa layanan ini membutuhkan waktu lama untuk memulai. Apakah lingkungan Anda tidak berukuran? Sudahkah Anda mengalami masalah kinerja pada layanan yang disurvei oleh layanan yang ditunda untuk memulai?

David Biot
sumber
Seberapa khusus layanan dapat mulai dipecahkan? Apakah ada cara untuk mengaktifkan pencatatan detail?
Kenny Evitt
1

Apa maksud Anda ketika Anda mengatakan "kami memiliki beberapa layanan Windows"? Itu menunjukkan kepada saya bahwa itu dibuat secara internal oleh seseorang dalam organisasi Anda? Jika demikian maka Anda berada dalam posisi yang lebih baik untuk men-debug mereka daripada orang lain di sini - dependensi apa yang dimiliki layanan ini pada komponen windows dan apakah programmer Anda dianggap menguji ketersediaan layanan ini dan menunggu mereka untuk online ketika layanan Anda mulai ?

Sudahkah Anda mempertimbangkan untuk menetapkan layanan ini sebagai ketergantungan dari layanan lisensi perangkat lunak (itulah slsvc )?

dari http://support.microsoft.com/kb/193888

Untuk membuat ketergantungan baru, pilih subkunci yang mewakili layanan yang ingin Anda tunda, klik Edit, lalu klik Tambahkan Nilai. Buat nama nilai baru "DependOnService" (tanpa tanda kutip) dengan tipe data REG_MULTI_SZ, lalu klik OK. Ketika kotak dialog Data muncul, ketikkan nama atau nama layanan yang Anda inginkan untuk memulai sebelum layanan ini dengan satu entri untuk setiap baris, dan kemudian klik OK.

Nama layanan yang akan Anda masukkan di kotak dialog Data adalah nama yang tepat dari layanan seperti yang muncul di registri di bawah kunci Layanan.

Ketika komputer mulai, ia menggunakan entri ini untuk memverifikasi bahwa layanan atau layanan yang tercantum dalam nilai ini dimulai sebelum mencoba untuk memulai layanan dependen.

Rob Moir
sumber
Terima kasih Rob - mereka internal - tetapi satu-satunya ketergantungan adalah kerangka .NET, yang saya tidak percaya berjalan sebagai layanan. Tidak memerlukan hal lain saat startup ...
James Crowley
0

Coba dengan ini:

Jalankan perintah berikut untuk menentukan peristiwa pemicu yang sesuai dengan lingkungan Anda. Dalam contoh ini, perintah menentukan apakah alamat IP diberikan kepada host, dan kemudian memulai atau menghentikan layanan.

sc triggerinfo w32time start / networkon stop / networkoff

di mana w32Time adalah nama layanan Anda

atau coba ini

https://support.microsoft.com/en-us/kb/922918

Fernando Diaz Toledano
sumber