Is it possible to test an application which is running under LAN network using JMETER? If it is possible to do so, then what settings I need to do? Please suggest..
I have some points on your question,
Apache JMeter may be used to test functional and performance both on
static and dynamic resources (Servlets, Application servers, Data
Bases and Queries, JDBC, Web Services and more,).
It can be used to simulate a heavy load on a server, network or
object to test its strength or to analyze overall performance under
different load types.
Jmeter can also use to perform a functional test on websites,
databases, LDAPs, webservices etc.
Jmeter also supports distributed load testing with different
machines.
Ans:
You can use jmeter for load testing the applications(specified above) in LAN Network using LAN URL&port number of application you are using.
Sure, it's possible.
jmeter.properties file which lives under /bin folder of your JMeter installation has 2 properties which are commented out:
#Define characters per second > 0 to emulate slow connections
#httpclient.socket.http.cps=0
#httpclient.socket.https.cps=0
Following values can be used to simulate LAN:
Ethernet LAN, 10 Mbit/s: 1280000
Fast Ethernet : 100 Mbit/s: 12800000
Gigabit Ethernet : 1 Gbit/s: 128000000
10 Gigabit Ethernet : 10 Gbit/s: 1280000000
100 Gigabit Ethernet : 100 Gbit/s: 12800000000
You can set this property either by uncommenting relevant property for your protocol in "jmeter.properties" file, putting amended properties in "user.properties" file, or set them in command line as:
jmeter -Jhttpclient.socket.http.cps=12800000
To throttle bandwidth limiting it to 100 Mbit/S
See Apache JMeter Properties Customization Guide for more details on how to deal with JMeter Properties.
Related
I would like to test the send/receive metrics when connected via a VPN using the JMeter tool then compare the results when not connected to the VPN. Would appreciate any thoughts on this subject.
I don't think there is something you have to do from JMeter perspective as traffic routing is the job for the VPN client so it should be sufficient just to execute the test 2 times:
1 test when the VPN connection is down
2 test when the VPN connection is up
The results can be compared using Merge Results Tool
If for some reason your VPN client doesn't pick up the traffic from JMeter to your application due to its configuration you can force JMeter to use your VPN network interface as the source IP address, the setting lives under "Advanced" tab of the HTTP Request Defaults configuration element
In my opinion, load tests should be performed from several different IP addresses simultaneously(because of restrictions on http). Am I right?
I will do load tests for:
Number of Threads (users): 2000
Ramp-Up Period (in seconds): 10
The load doesn't necessarily have to come from different IP addresses however depending on your application nature it might be required (for example application does explicit check of origin IP address or lives behind a load balancer with session stickiness based on IP addresses or whatever)
In this case you can perform IP spoofing so each request would come from the different IP address, you can configure source IP address under "Source address" input on the "Advanced" tab of the HTTP Request sampler
See Using IP Spoofing to Simulate Requests from Different IP Addresses with JMeter for more details.
Yes you can run JMeter locally, it can be run anywhere that has a Java Virtual Machine.
Another alternative if you are interested is Gatling http://gatling.io/
To perform load test in serveral different IP address use Jmeter remote test
control multiple, remote JMeter engines from a single JMeter client. By running JMeter remotely, you can replicate a test across many low-end computers and thus simulate a larger load on the server.
I have searched before writing this ... All i found is at certain point they are using load balancer hardware or software. But the thing i need is without hardware and Software can we do the load balancing ?.
While i was searching for this i came across the below statement.
"Another way to distribute requests is to have a single virtual IP (VIP) that all clients use. And for the computer on that 'virtual' IP to forward the request to the real servers"
Could you please anyone let me know how to do the Virtual IP load balancing?.
I have searched lots of article but i could not find anything related to VIP configuration or setup. All i found is only theoretical materials.
I need to divide the incoming requests into two applications. In this case both application server should be up and running.
Below is the architecture:
Application Node 1 : 10.66.204.10
Application Node 2 : 10.66.204.11
Virtual IP: 10.66.204.104
Run an instance of Nginx and use it as a load balancing Gateway for connections. There's no difference using virtual IPs to actual IPs - although it helps if your cloud setup is on LAN based IPs for both security and ease.
Depending on your setup there's two paths to go:
Dynamically assign connections to a server. This can be done on a split (evenly distributed) or on one instance until it fills up - then overflow.
Each function has it's own IP assigned. For example, you can configure the Gateway to serve static content itself and request dynamic content from other servers.
Configuring Nginx is a large job. However, it's a relatively well documented process and it shouldn't be hard for you to find a guide that suits your needs.
I am testing my application using jmeter tool. I am having 2 EC2 m1.small instances behind an ELB (not autoscaling group), 2 caching nodes huge RDS db (Multi-AZ). My Apache (peforked) is configured with default values like 256 maxclients. Both can handle 256-256 request. Now when jmeter throws 500 request I see connection time out error in one of sampler of the jmeter. Can anyone figure out what the problem is?
Thanks in advance.
What does JMeter throw back?
There are couple of things that could happen.
Connection reset: If this error is thrown out from your JMeter then it means that the server has maxed out and cannot support any more concurrent requests. i.e. the 256 threads allotted are all in use serving other requests and this basically means you have hit your limit on the server.
"Address already in use" exception: These kinds of errors are what you must not get when you do load tests. This basically means that there are no available ports on your system make more requests and all ports are busy. This could happen for a variety of reasons but you could try tweaking system settings like ulimit for linux or if your using a windows box you may want to look at the tcpTimedWaitDelay and corresponding settings to see the average turn around time for the ports to be handed over back into the active pool to be reused for the next connection. This condition is called tcp port exhaustion (http://www.outsystems.com/NetworkForums/ViewTopic.aspx?TopicId=6956&Topic=How-to-tune-the-TCP%2FIP-stack-for-high-volume-of-web-requests)
TO get around this you could also try distributed load testing and/or use timers to ensure that you always have the ports to make new connections.
I need to test the performance of application running on localhost as if it were in the online environment. I mean the performance test conducted by the network traffic simulation, limited bandwidth simulation, or other parameter as if it were online.
Could Apache Ab do the simulation?
We've used Charles and Firefox Throttle in the past to simulate slow networks.
Why can't you connect to a different PC, or even use a virtual machine and rate limit the virtual network connection?
Yes, but you will need to connect to your application by IP address, not "localhost" or 127.0.0.1. Typically for web applications (HTTP) I use Fiddler which can simulate limited bandwidth, but only if you connect as I have noted. Other bandwidth limiters for non-HTTP I'm not sure/aware of.
Ab won't simulate low level network errors. If you're on linux, you can simulate some networking with 'tc'. See http://www.kdedevelopers.org/node/1878 for a small example.
You can set up a local tunnel to expose your localhost to the world, using Ngrok. From there you can use any number of online performance tools
You can throttle bandwidth via Chrome Dev Tools