我有一個C#控制檯應用程序,它是作爲Windows服務在現場機器安裝的。此應用程序充當服務器並使用http和https服務。與客戶端URLS的Tiny HTTP服務器開放源碼通信使用。有90個客戶端使用使用flex開發的客戶端程序訪問服務器中的數據。這個Flex應用程序連接到服務器,如下,
登錄網址
try
{
if(!Request.Uri.AbsoluteUri.Contains("https"))
System.Threading.Monitor.Enter(Lock);
if (Request.Method == Method.Post)
{
SiteSession siteSession = _login(Request.Form["SiteName"].Value.Trim(),
Request.Form["UserName"].Value.Trim(),
Request.Form["Password"].Value.Trim());
if (siteSession != null)
{
if (siteSession.authenticated)
{
User currentUser = siteSession.thingzDatabase.currentUser;
_database = siteSession.thingzDatabase;
--------
項目/詳細網址,如http:\域名:端口\項目\詳細\ temid 一個客戶端調用近70的URL,並從數據服務器數據庫。總共90多個客戶端
當項目/列表被稱爲下面的代碼執行。
if (Id == "")
{
//System.Threading.Monitor.Enter(_locker);
System.Threading.Monitor.Enter(Lock);
try
{
if (Request.AcceptTypes == null)
{
TypeController.session_id = Request.QueryString["sessionid"].Value;
//queue.
Enqueue(Request.QueryString["sessionid"].Value);
//string que = "";
////do
////{
//que = queue.Dequeue();
//TypeController.session_id = que;
langStr = SessionDatabase.Language;
filter = new AllThingzFilter(SessionDatabase, parameters, langStr);
TypeController.session_id = null;
filter.Execute();
--------
有一位管理員使用具有不同端口號的安全https服務將數據更新/寫入服務器數據庫。 相同的登錄網址調用和其他post和get方法將在管理員登錄中調用。
服務器中使用的數據庫是sqlite。現在讓我解釋我的問題, 我收到客戶的投訴,稱服務器被吊死,管理員無法登錄。或者,如果登錄無法儘快上傳任何圖像,則任何數據庫更新都會執行,服務器將掛起。所以需要重新啓動Windows服務。
當管理員對服務器數據庫執行CRUD操作時。與此同時,客戶端應用程序(flex)應用程序也嘗試從服務器獲取數據。該URL每5分鐘從客戶端應用程序調用一次。
可能是什麼問題,我該如何解決這個服務器的問題。這是一個讀取或寫入問題的SQLite數據庫。 請幫助我提出寶貴的建議。
問候 桑傑塔
您可能需要添加一些跟蹤和/或記錄到服務器應用程序。這應該會提供更多關於錯誤發生的信息。 – 2013-05-10 16:13:10
問題幾乎肯定與您的鎖定代碼有關;如果您不小心將鎖定區域最小化並正確釋放它們,則很容易導致服務器死鎖。 – EricLaw 2013-05-10 16:38:30
@Sangeetha。當你說服務器掛起時,你的意思是說windows服務已經停止,或者它仍在運行但是沒有響應? – 2013-05-11 21:08:15