Layanan tidak menanggapi permintaan awal atau kontrol secara tepat waktu

2

Saya telah mencari tetapi tidak menemukan jawaban yang sesuai, jadi saya membuat pertanyaan saya sendiri. Kami memiliki beberapa server Windows 2003 SP2, masing-masing menjalankan layanan .NET yang diluncurkan dari mesin lokal dan berbagi windows. Tapi sudah kedua kalinya kami mendapatkan kesalahan: Kesalahan 1053: Layanan tidak menanggapi permintaan awal atau kontrol secara tepat waktu ketika mencoba me-restart layanan pada satu server tertentu, yang kedua berfungsi sebagaimana mestinya. Berbagi dengan executable tersedia, terbuka secara normal, memiliki izin yang tepat. Jadi semuanya terlihat sama di kedua server, tetapi ada yang memberikan kesalahan pada semua layanan yang kami luncurkan. Jika kita me-reboot server itu - itu berfungsi baik selama beberapa hari atau seminggu, dan kemudian mulai lagi.

Adakah yang punya saran?

elgato
sumber

Jawaban:

1

Ada perbaikan terbaru yang tersedia dari Microsoft

http://support.microsoft.com/kb/886695

Masalah ini terjadi karena Iisutil.dll DLL menambahkan kontrol akses   entri (ACE) ke deskriptor keamanan desktop untuk layanan itu   berjalan dalam konteks sistem. ACE memungkinkan Microsoft Internet   Akun Proses Pekerja Kelompok Layanan Informasi (IIS_WPG) masuk ke   desktop layanan sistem. Namun, jika proses lain menetapkan   deskriptor keamanan desktop untuk layanan yang berjalan di sistem   konteks ke nilai nol, Iisutil.dll mengubah akses diskresioner   daftar kontrol (DACL). Iisutil.dll mengubah daftar DACL sehingga ada   layanan yang menggunakan akun sistem lokal noninteraktif tidak bisa masuk   di.

Dave
sumber
1

Adakah yang punya saran?

Bukan apa yang ingin Anda dengar, tetapi bisa jadi apa saja. Saat ini, yang Anda benar-benar tahu adalah layanan kadang-kadang terlalu lama untuk memulai atau mematikan.

Anda benar-benar perlu kembali ke siapa pun yang mengembangkan layanan .Net untuk melihat apakah mereka dapat membantu Anda mendiagnosis masalah tersebut.

Tetapi sebelum itu saya akan merekomendasikan bahwa, daripada menggunakan restart, Anda mencoba menghentikan dan memulai layanan sebagai dua tindakan berbeda (dengan jeda singkat di antara mereka). Ini dapat membantu menentukan apakah masalahnya ketika mematikan layanan atau ketika memulai kembali. Mereka mungkin juga menganggapnya berguna jika Anda dapat menentukan berapa lama waktu mulai dan berhenti yang berhasil.

Anda juga harus memeriksa log peristiwa untuk melihat apakah ada informasi lain yang direkam.

Ketika sebuah layanan dimulai, fase startup awal seharusnya selesai dalam waktu tertentu (biasanya 30 detik). Karenanya suatu layanan biasanya akan mencoba untuk menjaga jumlah kode di bagian ini seminimal mungkin dan memulai utas latar belakang untuk melakukan sisa pekerjaan.

Demikian pula ketika Anda menghentikan layanan, seharusnya menyelesaikan proses itu dalam waktu tertentu (biasanya 20 detik). Ini berarti bahwa setiap operasi yang berjalan lama harus ditulis sedemikian rupa sehingga dapat dibatalkan jika layanan sedang dimatikan, daripada menunggu sampai operasi selesai.

Apa pun yang menyebabkan total startup atau periode shutdown melebihi batas akan menyebabkan kesalahan yang Anda lihat.

Untuk memberi Anda beberapa contoh yang dapat menyebabkan kesalahan. Misalkan pada saat startup, layanan Anda sedang melakukan pencarian DNS untuk nama komputer / server. Ini biasanya membutuhkan milidetik, tetapi jika DNS tidak dikonfigurasi dengan benar di server, ini bisa memakan waktu 15 detik atau lebih untuk menyelesaikannya, yang mungkin cukup untuk mengambil total waktu untuk memulai melebihi batas. Upaya kedua mungkin memiliki entri DNS di-cache dan karenanya bekerja dalam batas waktu yang tepat.

Kemungkinan lain adalah bahwa layanan ini mengandalkan perangkat atau sumber daya yang telah tertidur dan waktu yang diperlukan untuk membangunkannya adalah mengambilnya melebihi batas. Saat Anda mencoba layanan ini untuk kedua kalinya, perangkat sudah bangun dan merespons tepat waktu.

Jika layanan .Net digunakan secara luas, Anda mungkin beruntung dan menemukan bahwa orang lain di internet memiliki masalah serupa dan telah menemukan solusinya. Tetapi penyebab sebenarnya sangat tergantung pada apa yang sebenarnya dilakukan layanan ketika Anda memulai dan mematikan, itulah mengapa Anda akan lebih baik berbicara dengan para pengembang.

sgmoore
sumber