Jump to content

Recommended Posts

  • Administrators
Posted

Scalability is one of the major concerns when developing web applications. Each web application must be able to serve multiple users. Number of users can vary depending on type of application. An application designed for a small intranet may be targeted by 10-50 concurrent users at most while an internet web application may be used by more than 500-1000 simultaneous users.

 

In order to make sure your web application is ready for deployment in multi-user production environment several tests must be performed. Firstly, application must be analyzed for its resource usage. For a desktop app where only a single instance of your app is running resource usage will not be your main concern because your application can use all of resources available in system. On the contrary, a web application server is designed to serve multiple users and each user can be dedicated only a fraction of available resources.

 

Scalability simply means ability of your project to scale up when number of sessions increases in a real world system. A scalable web app should use several techniques to manage and use system resources in most efficient way possible. For example, if each of your sessions consumes ~1000 KB of memory (~1MB) in this case a web app running 400 sessions will require at least 400 MB of physical/virtual memory to run properly. However, if each session consumes more than 10MB then it is easy for your app to run out of memory when there are more than 100 active sessions. Other system resources such as disk space, database connections and etc. should also be taken into account.

 

For developers it may not be an easy task to simulate production environment on his/her desktop. Your app maybe running smoothly when there are only a few sessions, but when number sessions start to pass above a certain threshold several resource related issues and scalability problems may arise. To deal with such scalability issues uniGUI is equipped with a very useful named Stress Test Tool which aims to simulate a multi-user environment right on your desktop. Stress Test Tool is located under ..\uniGui\Utils\StressTestTool folder and it is deployed with full source code so it can be customized by developers  if needed. This tool introduces many advanced features which enables developers to simulate a production environment under heavy load.

 

For details please visit:

http://www.unigui.com/doc/online_help/index.html?stress_test_tool.htm

  • Upvote 6
  • 2 months later...
  • 6 months later...
Posted

Hi Farshad,

 

How change to true options->soAllowSessionRecording in runtime?

I would like of put in file ini, because I forgot to change and leave the production version with this option active.

 

Thanks

  • Administrators
Posted

Hi Farshad,

 

How change to true options->soAllowSessionRecording in runtime?

I would like of put in file ini, because I forgot to change and leave the production version with this option active.

 

Thanks

 

In ServerModule->OnBeforeInit event you can change this setting.

  • 1 year later...
  • Administrators
Posted

Hi Farshad,

I'm trying to run Stress Test tool, but it gives error "could not load SSL Library"

 

My App is running on IIS 8.5 server at: https://www.abilitycaresoftware.com/careplannerweb.dll

site has a godaddy cert installed and is set for https only.

 

What am I missing?

Thanks for your help in advance.

Mark

 

Hi,

 

You need to copy SSL dlls to stress tool exe folder.

DLLs can be found under uIndy folder.

Posted

Hi Farshad,

Thank you for that, now I'm getting a socket error #10054.

I've tried with AV and firewall disabled server side with same result. I don't know why I should be getting a peer reset error. Running IIs 8.5 on Win 2012. Could it be to do with my IIS config. here are my settings

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers accessPolicy="Read, Execute, Script" />
        <defaultDocument>
            <files>
                <add value="abilitycarelauncher.dll" />
            </files>
        </defaultDocument>
        <httpProtocol>
            <customHeaders>
                <remove name="X-Powered-By" />
                <add name="strict-transport-security" value="max-age=31536000; includeSubDomains; preload" />
                <add name="X-Frame-Options" value="SAMEORIGIN" />
                <add name="X-Xss-Protection" value="1;mode=block" />
                <add name="X-Content-Type-Options" value="nosniff" />
                <add name="Referrer-Policy" value="strict-origin" />
                <add name="Expect-CT" value="max-age=0; report-uri="https://abilitycaresoftware.com/E-CT/Reports"" />
            </customHeaders>
        </httpProtocol>
        <rewrite>
            <outboundRules>
                <rule name="Remove Server Responce Header">
                    <match serverVariable="RESPONSE_SERVER" pattern=".*" />
                    <action type="Rewrite" value="Hello Nosy Parker" />
                </rule>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>
 

 

Thanks

Mark

Posted

Hi Farshad,

Thanks very much.

Disabling TestURL() allowed the tool to start recording. I now have the same error 10054 when I stop the recording. 

 

It looks to be the same issue as with TestURL() except its in the GetRecordFile procedure at line;

 
procedure TSToolForm.GetRecordFile;
....
    HttpClient.Get(uHost, RespContent); <------------
....
 
I have buttoned up my IIS server as much as I can, do I need to relax the security on it to allow the test to run properly?
 
Thanks again and sorry to bug you on this I know how busy you are.
 
Regards
Mark
Posted

Hi Farshad,

The recording files do seem to be saving on the server in the record folder.

 

protecting the httpClient.get with a try except suppresses the error and allows me to see the recordings and run them.

New issue is access violation for each session in the test;

 

post-4824-0-07272500-1500130791_thumb.png

 

Thanks

Mark

 

 

  • 2 years later...
  • 4 weeks later...
  • 3 months later...
Posted

I have a problem with stress test tool that when ServerRoot of my ServerModule is set to some directory (this is my default working) the web server does not return records file so that stress test tool rises an exception and cannot stoprun the session.

If I disable setting ServerRoot stress test tool works fine.

So please have a look into this case and allow working even the ServerRoot location is set.

I hope I made it clear.

Thanks very much

Posted

procedure TSToolForm.GetRecordFile;
var
  HttpClient : TIdHTTP;
  HttpCmp : TIdCompressorZLib;
  uHost : string;
  RespContent : TMemoryStream;
begin
  uHost := AddTrailingChar(UrlEdit.Text, '/')+'records/'+FTempRecordFile;
  HttpClient:=TIdHTTP.Create(nil);
  HttpCmp := TIdCompressorZLib.Create(nil);
  RespContent := TMemoryStream.Create;
  try
    HttpClient.Compressor := HttpCmp;
    HttpClient.ConnectTimeout := CN_TIMEOUT;
    HttpClient.ReadTimeout := RD_TIMEOUT;
    HttpClient.Request.AcceptEncoding := 'gzip';
    HttpClient.Request.Host := uHost;
    HttpClient.Get(uHost, RespContent); //JUST HERE

 

---------------------------
Debugger Exception Notification
---------------------------
Project uniStressTest.exe raised exception class EIdHTTPProtocolException with message 'HTTP/1.1 404 Not Found'.
---------------------------
Break   Continue   Help   
---------------------------

Thanks

 

 


 

×
×
  • Create New...