MonoX support board

Start the conversation, ask questions and share tips and solutions with fellow developers.

Non-registered users can only browse through our support boards. Please register now if you want to post your questions. It takes a second and it is completely free. Alternatively, you can log in without registration using your credentials at major sites such as Google, Microsoft Live, OpenId, Facebook, LinkedIn or Yahoo.

Max No of users  (Mono Support )

Viewed 10000 time(s), 7 post(s) 8/30/2013 6:21:58 AMby SumitN
SumitN

SumitN

8/30/2013 6:21:58 AM
Hi,
In our environment we are having around 35000 users of monox, each one having their own blog.
Now the issue which we are facing is that monox has become very slow. what could be the reason and also tell me what could be possible solution.
We are using monox version 4.5.

Regards
Sumit
This content has not been rated yet. 
30 Reputation 4 Total posts
khorvat

khorvat

8/30/2013 7:12:48 AM
In order to help you with the performance issues we need a bit more information.

Like:
- did you change the built-in functionality of Blog ?
- how many concurrent users/visitors are there ?
- are you pointing out that accessing the Blog pages is slow or some other part of MonoX ?
- can you please provide us with Fiddler session of the slow request ?
- what is the hardware configuration used ?
etc.

Thanks
This content has not been rated yet. 
15993 Reputation 2214 Total posts
SumitN

SumitN

8/30/2013 8:53:32 AM
Hi,

my replies in bold..
- did you change the built-in functionality of Blog ? : Default functionality was one blog site...with your help we made this to one blog per user.
- how many concurrent users/visitors are there ?: at a time around 400-500 concurrent users are there...
- are you pointing out that accessing the Blog pages is slow or some other part of MonoX ? Overall Monox is slow..
- can you please provide us with Fiddler session of the slow request ?. what exactly do u need can you please detail it out.
- what is the hardware configuration used ?. Web Server :
2 VM of min 4 GB and max 16 GB RAM under load balancer env..
1 physical DB server with 8 GB ram
Regards
Sumit
This content has not been rated yet. 
30 Reputation 4 Total posts
pajo

pajo

8/30/2013 12:28:07 PM
Hi,

First thing you need to do is find bottle neck. I usually starts with fiddler, to measure request times. This way you can see how long it takes for browser to even get response from server, from that point everything is up to the client machine and fiddler will give you also statistic about network related times and time spent waiting for server. So if request takes 5 secs to complete, you can have request served in 1 sec and rest in spent on client side, in that case you know performance issue are coming from client side code, or 4 sec is spent on data transfer and network propagation time, in which case you have network related problem.

Before doing any deeper analysis I would suggest to profile application when there is no load. If you're not having performance problems when there is no high load, you would need to setup controlled environment where you can simulate high load. And this is no easy task, but otherwise it will be very hard to pinpoint problem and to test solutions for a problem before applying them.

I suppose in your case waiting for response on server will take most time, in that case you're sure you have bottle neck on server and now you must find where. First thing you should try is profile your database and see if you have long running queries and the cost of queries compared to the request time it takes on server. You should be careful here as there can be case of long running queries that are run very rarely and most likely are not cause for poor performance. Also you should check network connection between web server and sql server. If it's slow or have high ping time it can seriously degrade performance and it will affect whole site regardless of the server load.

If database is not issue problem is on web server it can be in code or server environment. In that case I would suggest to profile code to find methods where most execution time is spent. But before doing that try first to rule out running environment as potential problem.

Rated 5.00, 1 vote(s). 
629 Reputation 83 Total posts
SumitN

SumitN

10/11/2013 9:09:32 AM
Hi Pajo,
Thanks for the valuable inputs, trust me it really helped us.

Just wanted to know

    1. Whether MONOX will be able to handle 1 Lac user load or not
    2. If yes then what should be the ideal configuration of the 
            a. Web Server
            b. DB Server.

    3. Please Keep in mind that we have blog for every user which is change in orignal design.

Regards
Sumit
This content has not been rated yet. 
30 Reputation 4 Total posts
SumitN

SumitN

10/17/2013 5:22:33 AM
Hi,

Please reply.

Regards
Sumit
This content has not been rated yet. 
30 Reputation 4 Total posts
pajo

pajo

10/17/2013 9:51:03 AM
Hi,

First sorry for delayed answer. If I googled correctly lac should be order of 100.000. If you mean 100.000 request per second then most likely one server will not be able handle all this. Just to outline biggest issue with high request load (this is not primarily MonoX issue, but asp .net in general) and that's thread per request philosophy. This means that each thread will handle one request from start to end. Threads are relatively expensive resource so usually it's limited to certain number, when you run out of threads any request will have to wait even it will be served extremely fast. When you're not having any IO bound(db, network or file access) actions this is usually not a problem and your hardware would be most likely the limit. But if you have IO bound actions that are very slow compared to processing speed your threads are doing nothing just waiting for IO operation to complete and are blocking any other request for processing. You can have multiple web servers in web farms to tackle this issue, the load balancer in front of them will take care of spreading the load over them. But keep in mind that web farm will introduce some performance penalties as you can't keep any shared resources in local storage any more (session, cache, file system), so you would have to use distributed systems that every web server can access. You would need to do stress tests on your system to find best configuration (you can play with asp .net settings on number of threads and concurrent requests it should handle to better utilize you web server hardware) and number of servers you should have to handle to load. One nice thing with farms is you can easily add another node, especially when in the cloud, you can bring it up in few minutes.

Now this is all fine if your database can handle the load. If database starts to crack under volume of data, you can't just add nodes to solve the problem as each node will be slow. If you're having huge amount of data you need to serve db is almost certainly going to start to drag application. And there is really no simple solution to these issues and it should be solved base on data use case.

To recap if your database can handle the load it should be possible to configure site to handle high load. If db can't handle the load then you're going to have a hard time fighting these issues on MonoX. Anyway you should do a stress tests to really see if it's going to work as I might easily miss something in the equation. 

This content has not been rated yet. 
629 Reputation 83 Total posts