For the past few months I have been struggling with the mysteriously poor performing QuickTest Professional (QTP) on Windows. When tested similar transactions using the LoadRunner (LR) tool, the average response times were satisfactory -- mostly under 2 seconds. However when tested with QTP, the averages were unusually high - they are mostly between 2 and 4 seconds. LoadRunner data eliminated the web and application servers from the picture. Because the LR reported averages are in the expected range, the web and app servers might be performing well. Hence there is no apparent reason to suspect web/app servers for the slowness observed through the QTP tool. That leaves the QTP client as the primary suspect.
There is no improvement in the average transaction response times even after downgrading the version of QTP tool and the Internet Explorer web browser. Luckily one of my colleagues at work noticed slight improvement to the averages when we are not monitoring the QTP test running through our VNC viewers. The response times were better when we either close the VNC viewer window completely or minimize it. That was an interesting observation. VNC service appears to be interfering with the web browser's rendering performance; and due to that the recorded response times were poor. So I stopped the VNC server/service on the QTP client machine; and connected to the QTP client through the "Remote Desktop connection" from another PC. Finally I re-ran the same QTP test that I ran earlier when I was connecting through the VNC. Voila! the QTP response times are almost coinciding with the LoadRunner reported response times.
To make it more attractive, here is some sample data that shows the difference between the response times when connected through the VNC and the Remote Desktop connections:
----------------------------------------------------
VNC Remote
Viewer Desktop
----------------------------------------------------
Average Logon 2.59 sec 0.76 sec
Avg. Page Load 2.91 sec 0.77 sec
Avg. Page Save 3.82 sec 2.05 sec
----------------------------------------------------
Moral of the story:
When running performance tests with QuckTest Pro (QTP) tool on remote clients, consider connecting to the remote client using "Remote Desktop" connection. Web browser might perform suboptimally under the VNC, which might skew the overall performance data.
And of course, I do not have any evidence other than the above data that proves VNC guilty. It was just my observation.
________________
Technorati Tags:
QTP |
QuickTest Pro |
LoadRunner |
VNC |
Remote Desktop |
RDP |
Windows
Building and installing the MySQL server from the source code is relatively very easy when compared to many other OSS applications. At least that was my experience. The following simplified installation instructions were based on the
MySQL 5.0 Reference Manual .
Steps for setting up the MySQL 5.x environment on Sun Solaris
- Create 'mysql' group, then 'mysql' user.
eg.,
# mkdir /export/software/mysql
# groupadd mysql
# useradd -g mysql -d /export/software/mysql -s /bin/bash mysql
# passwd mysql
New Password: mysql
Re-enter new Password: mysql
# chown mysql:mysql /export/software/mysql
- Login as 'mysql' user; and add the following directories to the PATH environment variable:
eg.,
% cat ~/.bashrc
PATH=/usr/bin:/usr/sbin:/usr/openwin/bin:/usr/ccs/bin:/usr/ucb:/usr/sfw/bin:/opt/csw/bin:/usr/local/bin:.:$PATH
export PATH
- Download MySQL 5.0.51b source code from the location: http://dev.mysql.com/downloads/mysql/5.0.html#source. Download the compressed GNU TAR archive (tar.gz).
- Run "configure" with the following options.
eg.,
% ./configure --prefix=~/MySQL5051b --enable-shared --enable-thread-safe-client --with-pic --with-debug=no
- Run "make all" to build MySQL
eg.,
% make all
- Run "make install" to install MySQL either in /usr/local directory or the directory specified in "--prefix" during the "configure" task.
eg.,
% make install
- Initialize the grant tables. "mysql_install_db" program sets up the initial MySQL grant tables containing the privileges that determine how users are allowed to connect to the server. mysql_install_db needs to be run only the first time you install MySQL on Solaris from the source code.
eg.,
% pwd
/export/software/mysql/MySQL5051b/bin
% ./mysql_install_db --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/export/software/mysql/MySQL5051b/bin/mysqladmin -u root password 'new-password'
/export/software/mysql/MySQL5051b/bin/mysqladmin -u root -h unknown password 'new-password'
Alternatively you can run:
/export/software/mysql/MySQL5051b/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
...
...
- Start the MySQL server
eg.,
% ./mysqld_safe &
Starting mysqld daemon with databases from /export/software/mysql/MySQL5051b/var
- Verify that the server is running
eg.,
% ./mysqladmin version
./mysqladmin Ver 8.41 Distrib 5.0.51b, for pc-solaris2.11 on i386
Copyright (C) 2000-2006 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Server version 5.0.51b
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 4 min 28 sec
Threads: 1 Questions: 1 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.004
- Verify that you can retrieve information from the server.
- List the existing databases
eg.,
% mysqlshow
+--------------------+
| Databases |
+--------------------+
| information_schema |
| test |
+--------------------+
- List the tables in one of the existing databases.
eg.,
% mysqlshow information_schema
Database: information_schema
+---------------------------------------+
| Tables |
+---------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| KEY_COLUMN_USAGE |
| PROFILING |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| STATISTICS |
| TABLES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
+---------------------------------------+
- Retrieve the row count from one of the tables in the "information_schema" database.
eg.,
% mysql -e "SELECT COUNT(*) FROM TABLES" information_schema
+----------+
| COUNT(*) |
+----------+
| 17 |
+----------+
- Finally shutdown the MySQL server. Only privileged MySQL users can shutdown the MySQL server. The grant tables (step #7) step creates a superuser account with username 'root'. This account pertains to MySQL only. It is no way related to the OS username. The initial 'root' account password is empty, so anyone can connect to the MySQL server as 'root' without a password; and be granted all privileges.
eg.,
% id
uid=65539(mysql) gid=104(mysql)
% ./mysqladmin shutdown
./mysqladmin: shutdown failed; error: 'Access denied; you need the SHUTDOWN privilege for this operation'
% ./mysqladmin -u root shutdown
Check the other window for the shutdown confirmation where you started the MySQL server.
% ./mysqld_safe
Starting mysqld daemon with databases from /export/software/mysql/MySQL5051b/var
STOPPING server from pid file /export/software/mysql/MySQL5051b/var/unknown.pid
080612 13:59:09 mysqld ended
At this point "mysqladmin version" should return an error.
% ./mysqladmin version
./mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!
________________
Technorati Tags:
Sun Solaris |
OpenSolaris |
MySQL