Unable to get performance counters from certain servers when running load tests - visual-studio-2010

I am running load tests using the built in system in Visual Studio 2010. The setup is a test controller with four agents. The tests that I am running will put load on an application server and a database server. The problem I am having is that I am unable to get values from the performance counters on the application server and the database server. I have followed the instructions on http://msdn.microsoft.com/en-us/library/ms404661%28v=vs.100%29.aspx and http://blogs.catapultsystems.com/tlingenfelder/archive/2009/06/18/performance-counters-timeouts-and-load-testing-with-visual-studio-2008.aspx in order to troubleshoot, but to no avail.
Using Performance Monitor (perfmon) I can connect and get values from the performance counters on the application server and database, tested from several computers. But when running the load tests, I get nothing.
I am trying to get system performance counters like CPU% and memory usage, so there are no custom counters involved.
Any hints as to what I shoud do next?

The main problem was that I was not aware of that in order to get performance data from a computer during load testing it should have a test agent (or controller) installed on it.
Install test agents and register them with the controller on all machines used for load testing (for me, the appserver and the database, those did not have test agents installed)
In the actual load test in Visual Studio, remove the appserver and database from the counter sets
Add them again
Run the test!
Seems like the old reference to the appserver and database in the load test did not work as expected, hence the need to remove and add them again.
Voila! Performance counters appears and returns values!

I have also the same problem.
The only solution I found is to remove some counters in counter sets and also increase the sampling interval (see here).
Another things that i have in my rig are Roles : agents will run tests but not collect data ; this will be done by my web server (installed a test agent on it). Please look at the link.

Related

Performance Testing of OBIEE application?

Following parameters should be set for OBIEE Presentation Server only during load testing.
OBIPS\instanceconfig.xml
save and exit file Restart OBIEE processes using OBIEE EM console.
<ServerInstance>
[...]
<Cursors>
<NewCursorWaitSeconds>36000</NewCursorWaitSeconds>
<OldCursorWaitSeconds>36000</OldCursorWaitSeconds>
</Cursors>
[...]
</ServerInstance>
You do know that this represents a value of 10 hours, correct? You are willing to lock resources for that length of time? This is counterintuitive for optimal application performance as you would seek to recover resources as fast as possible to support more sessions versus locking a resource for an extended period of time.
I refer to the following performance "compass rose" as a guiding item (independent of tool)
If you need to amend the file on a remote server you can do this either via OS Process Sampler or via SSH Command Sampler. The first one is a part of JMeter installation, the second one you can install using JMeter Plugins Manager
See How to Run External Commands and Programs Locally and Remotely from JMeter for more information, example configuration and sample commands.

performance counter category 'Process' cannot be accessed on computer- VS load Test

When i run Load test using Vs Load Test i get an exception
The performance counter category 'Process' cannot be accessed on computer;check that the category and computer names are correct. - -
You need to sort out permissions etc to allow the user and computer running the tests to collect the performance counters from the remote machine. The short answer is that if the user running the tests cannot see the counters with Perfmon then Visual Studio will not be able to see them. Hence Perfmon can be used to give confidence that the settings are correct.
To enable collection of performance counters by a Visual Studio load test do the following in each remote computer to be monitored. Perform these steps while logged in to a sufficiently privileged account.
1) Run wf.msc. In the inbound category, enable the Performance Logs & Alerts firewall exception.
2) Run lusrmgr.msc. Add the user to the Performance Log Users, the Performance Monitor Users and the Event Log Readers groups. The user to be added is the user who will be running the tests.
3) Run services.msc. Ensure the Performance Logs & Alerts and the Remote Registry services are set to autorun.
4) Run secpol.msc. Ensure that the Performance Log Users and the Performance Monitor Users groups include the Log on as a Batch User privilege.
5) At a command prompt rebuild all counters on the machine by running lodctr /r. (Have seen this command returning the message Error: Unable to rebuild performance counter setting from system backup store, error code is 5. Have not tracked down the reason but it does not appear to cause any problems.)
These commands are explained in more detail here.

Fetch response times in JMeter running remotely

Ok so I set up my JMeter to run remotely using one slave computer (possibly more to come), and it's working out for the most part EXCEPT that I can't fetch the response time over time-graphs function using the JMeter plugin. I'm still able to use the "PerfMon Metrics" tool to get the CPU/Memory values from the slave computer, so I don't understand how I'm not able to get the response time results.
Does anyone have any experience using that function?
I would check the master- slave configuration: be sure that
the same Jmeter release is used
same directory tree structure is used
Jmeter-plugins are installed on both systems
...
If you use a standard "Summary report" listener, and save data to a file in the master, then you can reload and analyse the data off line with any listener.
HTH

VS2010 Load Test Failing - Cannot Open Database - NOT The Load Test Results database

Hi I have been battling with this issue all day. I have a vs2010 load test which consists of three scenarios which are composed of three different web performance tests.
Each of the web performance tests select urls from a database which is configured correctly and runs locally. However when the load test is run remotely it fails with the error:
Could not run load test 'Load Test' on agent 'AGENTSERVER'. Could not open the database 'URLSDB' requested by the login. login failed for useraccount
In an attempt to get this working the agents and controller are set to run under a domain admin account, I can login to the database through Management Studio. I've checked the connection string and can run the test locally but not remotely. Does anyone have any ideas? My next step is to set the connection string to the UrlsDB to use SQL Authentication
Finally managed to resolve it at 01:20AM. When checking the datasources of three individual tests which made up the mixes in the scenario, I found that the UI was showing that once one had been updated all three updated the connection string so that is why I was baffled as to why I was getting these errors, plus the error doesn't indicate which connection was having the issue.
So to eliminate the tests as being the issue I removed the datasource from each test and created individually named brand new datasources all till effectively pointing to the same sql server and the same database. Then I ran the tests and all performed correctly, finally!!
So the core issue was the connection strings in the underlying tests were incorrect. Will be testing the UI further to check if I was just my own error or there may actually be a bug in the UI, if I find a bug I'll report it.
Thanks to those who took the time to try to help me solve it, gutted that the issue was so minor when it had me baffled for nearly 20 hours :/
The domain admin account you are running the test from cannot connect to the database server from the agent machine.
Log into the agent and debug the database connection from there.
Please be aware that a thread blocking call inside a web test, such as this may cause issues with your load test. I recommend that you load all test url's during the test instanciation if at all possible.
Essentially minimise the database calls to as few as possible.

Controlling PerfMon logging on multiple systems

I need to use PerfMon to collect data from several machines, and I need to be able to turn collection on/off at certain times. I've got all the data points configured on each machine; I just need to start/stop PerfMon, and to start/stop collection of a set of data points.
For reasons I won't go into, I can't simply configure all collection from a single PerfMon instance on a single machine - I need to start/stop PerfMon data collection on multiple machines at (about) the same time.
The systems involved are all running Windows 2003 Server, and I'm unable to install any additional software on the systems.
Is it possible to do this using e.g. PowerShell (or something else that's normally installed on Windows 2003 servers)?
Take a look at logman.exe. You can use it to create countersets (if you already have a template definition) as well as to start/stop perfmon data collection. See this Overview of Performance Monitor for some information on security requirements of the account executing logman.exe.
From .bat, MSBuild or Nant you can do something like:
Logman start [logname] -s [computername]
or
Logman stop [logname] -s [computername]
Once you've collected all those log files you can use relog.exe to import them into a sql instance so that you can more easily query/report against them.
I know you mentioned you can't install any additional software, but...depending on the setup of your lab, or other environment, you might want to consider having perfmon log to a sql data store. Even if its a Sql Express instance running on a server in the environment it might make your life easier. At least it could/would skip the importing of the data into a single store to make it easy to query/analyze.
Good luck!
Z

Resources