ご挨拶!
ライブ マシンに Windows サービスとしてインストールされている ac# コンソール アプリケーションがあります。このアプリケーションはサーバーとして機能し、http および https サービスを使用します。クライアントの URL と通信するには、オープン ソースの Tiny HTTP サーバーが使用されます。flex を使用して開発されたクライアント プログラムを使用して、サーバーからデータにアクセスするクライアントが 90 あります。この flex アプリケーションは、以下のようにサーバーに接続します。
ログインURL
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:\domainname:port\item\detail\temid のようなアイテム/詳細の URL 1 つのクライアントが約 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サービスを使用してサーバーデータベースにデータを更新/書き込む管理者が1人います。同じログイン URL 呼び出しと他の post および get メソッドが管理者ログインで呼び出されます。
サーバーで使用されるデータベースは sqlite です。ここで私の問題を説明しましょう。クライアントから、サーバーがハングし、管理者がログインできないという苦情を受け取りました。または、データベースへの更新が実行されるとすぐにログインして画像をアップロードできない場合、サーバーがハングします。そのため、Windows サービスを再起動する必要があります。
管理者がサーバー db に対して CRUD 操作を実行するとき。同時に、クライアント アプリケーション (フレックス) アプリケーションもサーバーからデータを取得しようとします。この URL は、クライアント アプリケーションから 5 分ごとに 1 回呼び出されます。
何が問題で、どうすればこのサーバーハンドを解決できますか. それはsqlite dbへの読み取りまたは書き込みの問題ですか。貴重な提案で私を助けてください。
よろしくサンギータ