Is it required more than one virtual users to perform load test on RESTfull web services? - rest

I have to perform load test on REST web services of 1000 concurrent users activities. I have selected NeoLoad tool for it. Is it required to have license for 1000 virtual users to simulate 1000 users or form one virtual user I can simulate 1000 users activities?

Load testing tools (like NeoLoad) price their license based on concurrent virtual users. So, if you have a license for a single user, you can create many requests, but only one at a time. To general load of 1000 users concurrently, you'll need a 1000 users license.

To simulate 1000 concurrent users you really need 1000 VUs as if you use only one you would be:
having wrongly good responsectimes due to caching effect
having wrongly negative response times due to contention on writing
you would probably not be reproducing the production behaviour of server regarding memory usage, caching....
But note that for http restful load testing you could go for a lot of free production ready open sources like Apache JMeter, locust...
https://www.blazemeter.com/blog/rest-api-testing-how-to-do-it-right
https://www.redline13.com/blog/2018/05/test-rest-apis-authentication-using-jmeter/

Related

Is there a way to Rate Limit or Throttle a user or a connection in PostgreSql?

We have a setup wherein a Database instance is shared between multiple users.
We are trying to implement some form or throttling or Rate limiting for a shared PostgreSQL so that one user may not starve other users from consuming all the resources.
One approach that we can think of is adding connections pools and fixing the number of connections that we give each tenant.
But one user can still starve all the resource over a few connections. Is there a way to throttle resource usage per connection or per user in PostgreSQL?
No, the postgres documentation makes it clear that's not possible using Postgres alone.
It's usually a (very) bad sign if your application allows one user to starve resources from others - it suggests you've got a bottleneck in your application, and that bottleneck will appear when you least want it to.

is sails.io efficient enough to build chat website for some 1000 online user at the same time?

I intend to use sails.io to build a chat website. There will be some 1000 user online at the same time. is sails.io is enough to do that? And is there a way to test performance of chat website? with some normal website i known jmeter but for chat website i know nothing at all
That will depend mostly of the server you will be using for your service.
Sockets are simply an array of connections. You can have as many as you want (within normal memory usage limits of your server machine).
You can checkout this answer for more information on socket costs What's the maximum number of rooms socket.io can handle?
I am currently sails.io for a chat product with 2000+ simultaneous users using it during business hours. Sails socket.io have been holding it pretty well. Nevertheless I got it prepared for horizontal scaling when I maximum capacity starts to show symptoms.You should too.

Is there a concurrent rate limit to MSFT graph (Outlook mail)?

currently I am making a small app that will provide users with the ability to mark multiple email messages as being "read" in one click.
Unfortunately, the MSFT graph API does not support multiple update calls as specified here
So what I am doing right now is using asynchronous IO server side to send multiple REST API requests simultaneously.
I know there is a 60 requests/min limit. But is there a simultaneous connection limit as well?
There is a simulatenous connection limit because access to store is serialized. I would recommend going with 4 simultaneous requests at max (Maybe even lower). From Exchange Store perspective all access to store is serialized irrespective of the App.
Microsoft Graph also plans to support batching soon so when they do enable it you can make one call and update read flag for multiple messages.

Tableau - Resource Governing with Multi-tenancy

My proposed implementation for Tableau server is a 2 server setup with multiple sites which will all me to segregate dashboards to different groups of users. Tableau provides all of this ability out of the box which is good. My question is really about in production, how do I ensure that a request for a dashboard does not consume 100% of the server resources and therefore other dashboard requests will be queued.
It is always good to have an example :-)
Imagine I have 3 'sites' defined in my Tableau server, let's give these names:
Sales
Marketing
Purchasing
Tableau server has users created to permit access to dashboards within each site. Within the Sales site is a dashboard that must run a complex query (I know I would refactor and use the facilities of Tableau to speed this up but this is purely for discussion) which takes a siginificant amount of time and aggregation within Tableau. During this period, how can I ensure that:
Other users within Sales can still access their dashboards?
Marketing and Purchasing are not impacted by the reduced resources on the Server.
Does Tableau provide any way of governing the amount of resources on the box that is assigned to each site?
You can limit the number of users that can be added to a site and can define a storage quota for a site, but I don't think there is a way to reserve CPU or network bandwidth for one site at the expense of others. All the users on the server contend for the same resources, regardless of which site defines the view.
If this is a critical factor in practice, you could stand up a second server to hold the high priority visualizations, thus reserving resources for them alone -- at the cost of a second license.

how can i measure stress testing for the iPhone app?

how can i measure stress testing for the iPhone app ?
i need stress testing not performance testing, for example 100 users access the database of the app which is on the server at the same time.
any help?
thanks in advance
First, you need to decide if you need to test the client-side (iPhone) app, the server-side code, or both.
Testing ONLY the server-side, might make this much easier - especially if it is using HTTP to communicate with the server and exchanges data via a text-based format (XML, JSON, etc). There are many web load testing tools available which can handle this scenario. Using our Load Tester product, for example, you would configure the proxy settings on your iPhone to point to our software running on a local machine. Then start a recording and use the application. Load Tester will record the messages exchanged with the server. You can then replay the scenario, en masse, to simulate many users hitting your server simultaneously. The process, at a high level, is the same with most of the web load testing tools.
Of course, the requests to the server can't be replayed exactly as recorded - they'll need to be customized to accurately simulate multiple users. How much customization is needed will depend on the kind of data being exchanged, the complexity of the scenario and the ability of the tool to automatically configure dynamic fields (and this is one area where the abilities of the tools vary greatly).
Hope that helps!
A basic simulation would involve running your unit tests on OS X, using many simultaneous unit test processes (with unique simulated users, and other variables).
If you need more 'stress', add machines - you'll likely end up hitting io or network limits from one machine relatively early on.