Using nginx to simulate slow response time for testing purposes

Rafael Augusto Mendes Moreira picture Rafael Augusto Mendes Moreira · Feb 7, 2013 · Viewed 9.8k times · Source

I'm developing a facebook canvas application and I want to load-test it. I'm aware of the facebook restriction on automated testing, so I simulated the graph api calls by creating a fake web application served under nginx and altering my /etc/hosts to point graph.facebook.com to 127.0.0.1.

I'm using jmeter to load-test the application and the simulation is working ok. Now I want to simulate slow graph api responses and see how they affect my application. How can I configure nginx so that it inserts a delay to each request sent to the simulated graph.facebook.com application?

Answer

khizar ansari picture khizar ansari · Feb 7, 2013

You can slow the speed of localhost (network) by adding delay.
Use ifconfig command to see network device: on localhost it may be lo and on LAN its eth0.

  • to add delay use this command (adding 1000ms delay on lo network device)

    tc qdisc add dev lo root netem delay 1000ms

  • to change delay use this one

    tc qdisc change dev lo root netem delay 1ms

  • to see current delay

    tc qdisc show dev lo

  • and to remove delay

    tc qdisc del dev lo root netem delay 1000ms