2007-10-17

session asp.net SQL mode

kasus nya, gw punya aplikasi web yang rodo rodo berat. setting default nya, session di ASP.NET (1.1) memakai inproc session, jadi nya semua variable session di simpan di memory (RAM) web server (yang sekaligus application server?)

gak tahu ini good or worst practice, tapi aplikasi web gw masih banyak memakai session variable. nah, 'jelek' nya ASP.NET (1.1, running on W2003 server), itu kalau dia merasa 'worker process' nya ya udah mulai kehabisan nafas (ada threshold nya, memory udah abis sekian, processor sekian, or udah jalan sekian lama), 'otomatis' worker process nya di 'restart'.

gw amati, kayak nya process restarting ini mengakibatkan session variable gw ilang semua! so, yang login jadi ter logout, variable id yang diperlukanpada ilang, kacau deh. (anyway, menyimpan login status di session sendiri sebenar nya agak bahaya).

untuk mengatasi issue restarting worker process nya si ASP.NET ini, gw alihkan session nya handler nya dari InProc ke SQLServer (di set di web.config, case sensitif ya settingan nya).

kebetulan, gw punya SQL Server gw pasang di web server gw (don't ask about licensing nya :). so, gw coba konek pake trusted connection, katanya lebih aman. (gw belum bisa pake trusted connection dari ASP.NET application ke SQL Server di physical server lain yang tidak pake domain). Kata manual, tinggal run beberapa script, tambahkan login [computer]\Network Service ke server tersebut, dan tambahkan user ini ke database temp.

so far so good, until... SQL Server gw di restart! katanya, tempdb itu di recreate tiap kali sql server di restart. but, table aspsession nya di tempdb koq tetep ada ya ? yang tidak ada adalah, user NETWORK SERVICE sekarang tidak ada lagi di database tempdb (login di SQL Server nya sih masih, kalau elo gak tahu beda login ama user di SQL Server, baca BOL dulu :).

so, session gw macet dan web aplikasi gw rusak. setelah di tambahkan lagi manually user network service ini, semua nya lancar lagi.

jadi, inget. kalau SQL Server tempat nyimpan session di restart, dan kita pake trusted connection, cek lagi apakah user nya masih ada atau gak. belum tahu kasus nya kalau pake sql login connection.

Tidak ada komentar:

Posting Komentar