Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
IWServer as service become unresponsive
I am using IW 14.2.9 ultimate with Delphi 10 Seattle 
Installed components : TMS and CGDevTools
External connection is done thru an proxy server.

I encounter a strange situation, service is running ok several days, but are moments when become unresponsive.
Server processor goes above 25 % and everything respond in 10-20 sec or even get timeouts.

Restarting service do not solve the problem, because instantly server get back to 25-30 %. Memory consumption is not height and third server (database layer) is working ok for other clients as well.

I did also a new installation of  IW service on second server and from proxy I activate which server to run. But when are problems, Proc constantly > 25 % switching servers do not solve anything. Second server goes instant to the same proc usage and also become unresponsive.
That takes  from 5 min to 40 min, till everything goes back to normal and server respond in milliseconds.

What I didn't understand, is , when busy, why do not show at list page of login (that is simple and do not connect to any third party service) when start.
Why server does instantly at 25-30 % when restarting ?!
In logs are nothing strange, no exceptions reported.

Please, any suggestion is very welcome.

  self.RestartExpiredSession := True;
  Self.BoundIP := FConfig.CFG.ReadString('Server','BoundIP',False);
  self.Port := FConfig.CFG.ReadInteger('Server','BoundPort',False);
  self.AllowMultipleSessionsPerUser := false;

 Self.SessionTimeout := 120; {2 hours}
 Self.FilesDir :=  Self.ContentPath + FConfig.CFG.ReadString('Server','SharedFilesDir',False);
 Self.InternalFilesDir := Self.ContentPath + FConfig.CFG.ReadString('Server','SharedFilesDir',False);

TIWSecurityOptionsAccess(Self.SecurityOptions).mCheckSameIP := False;
TIWSecurityOptionsAccess(Self.SecurityOptions).mCheckSameUA := true;
TIWSecurityOptionsAccess(Self.SecurityOptions).CheckFormId := true;
SecurityOptions.ShowSecurityErrorDetails := False;

CookieOptions.SessionCookies := false;
CookieOptions.HttpOnly := true;
CookieOptions.UseCookies := True;

  self.JavaScriptOptions.AjaxErrorMode := emNone;
  self.LogCommandEnabled := true;
  self.LogSessionEvents := true;

  self.ExceptionLogger.RegisterIgnoreException(EUnknownBrowserException); {Unknown browser type}
  self.ExceptionLogger.RegisterIgnoreException(EInvalidSession); {Invalid session}
  self.ExceptionLogger.RegisterIgnoreException(EExpiredSession); {Expired session}
  self.ExceptionLogger.RegisterIgnoreException(EIWNoSessionId); {No session ID}

  self.ExceptionLogger.LogType := ltFile; // ltEventLog;
  self.ExceptionLogger.FilePath := Self.ContentPath + 'Exceptions\';
  self.ExceptionLogger.FileName := 'Exceptions.log';
  self.ExceptionLogger.PurgeAfterDays := 1;
  self.ExceptionLogger.Enabled := True;
Is this a new behavior or this changed recently? IW 14 is very old so I'm assuming that your application has been tested for some time already?

Also, you are using 2 other IW component sets. I'm not sure how do you use them, which version, etc. However I can't respond for other component vendors. Have you tried a simpler application with no 3rd party components on those same serves to see how it goes?
Is working ok from several years, unfortunately take me some time to move to IW 15 because of some different visual behavior that I need to adjust. (Delphi 10.4.2). And behavior changed from July, ones our data volume increasing. Seems is happening when SQL server respond slowly and queries can take more time (is some combinations of SQL server execution that can generate this slowness, that I did not find yet - can be the case when a query that usually takes 200- 300 ms to takes 4-5 sec), but in this case why a new session and Login form (that is independent of database server on creation moment) are not shown ?! I was very carefully with thread safe implementation and session get just few parameters on creation in a critical section.
So, ok I understand that some threads (sessions) can wait more time from database layer server, but I do not understand why IW listener, do not respond to a new session call?!
Also, when restart service and delete cache, why orphans calls is still take in consideration and make server unresponsive immediately. Are some parameters that need to be set in IWServer to avoid that ? Maybe I set one that generate this behavior.
Also where I can see and full example of how is best practice to setup IWServer parameters ?
Thank you!

Forum Jump:

Users browsing this thread: 1 Guest(s)