Answer: Different email clients handle HTML text in different ways, with some garbling the text more than others.
At the present time (June 2010) Yahoo Mail (ymail.com) does one of the best jobs handling Foxhound Alert
emails, and Google Mail does the worst job.
Question: Why are the values so large in the Interval and Sample Time columns?
Answer: Check to see if the target database is "Using 1 CPU".
When a personal server (dbeng*.exe) is heavily loaded as far as CPU usage is concerned,
it may not respond quickly to sampling requests from Foxhound.
Try using the network server (dbsrv*.exe) so that it can use multiple CPUs.
Question: Why are there so many "Connection timeout" messages in Foxhound - Options - Display Diagnostics?
Answer: In some special circumstances
(described here)
the Foxhound Monitor will enter "Connection timeout" state when
it can't connect to a target database for about 15 seconds.
After a minute or so (by default, described here),
the Foxhound Monitor will try connecting again, and if the special circumstances persist
you'll see another "Connection timeout" message, and another, and so on.
These messages will appear about 1 minute and 15 seconds apart in
Foxhound Options - Display Diagnostics:
1531 2010-04-13 11:10:20.221 Full Build 3659a 1000000003 202a3a(202eh1) Connection timeout for target DSN ... after 19.9s (timeout threshold is 15.0s; see Foxhound Options) - 1000000005
1532 2010-04-13 11:11:35.895 Full Build 3659a 1000000003 202a3a(202eh1) Connection timeout for target DSN ... after 15.2s (timeout threshold is 15.0s; see Foxhound Options) - 1000000046
1533 2010-04-13 11:12:51.696 Full Build 3659a 1000000003 202a3a(202eh1) Connection timeout for target DSN ... after 15.1s (timeout threshold is 15.0s; see Foxhound Options) - 1000000075
Question: Why aren't more "Uninteresting Connections" being deleted by the Foxhound purge process?
Answer: An "Uninteresting Connection" is a connection that isn't doing anything and isn't preventing any other connection from doing anything.
In particular, it's a connection that
hasn't used any CPU time, issued any new requests, executed any commit
or rollback operations or caused any pages to be written to the rollback log for a while,
isn't holding any locks, and
isn't blocking any other connections.
For example, if your Foxhound database contains a large amount of Monitor data for idle connections to a target database, check to see
if those connections were holding any locks. If so, then the "Uninteresting Connections" purge criteria won't
be satisfied; try using the "Purge all sample data: after 1 day ... 1 week ..." criteria instead.
Question: Why did Foxhound start automatically after I stopped it?
Answer:
One possibility is that your Foxhound database is being backed up on a regular
basis by a scheduled task, and that task runs the $backup_foxhound1.bat
command file which automatically starts the database if it isn't already running.
Question: Why do I get an ALERT #28 - Long transaction when there are no connections running long transactions?
Answer: If Foxhound is running on one computer and the target database on another, and you see occasional
false ALERT #28 - Long transaction messages, each one eventually followed by an ALL CLEAR #28
message, it is possible that the system clock is slowly drifting forward and then resetting on
the computer running Foxhound.
Foxhound requires the CURRENT TIMESTAMP values from both computers, and in this one case (detecting
a long transaction) Foxhound does not properly account for the difference in values.
This problem will be fixed in a future free upgrade of Foxhound.
You will be able to download and apply that upgrade without losing any of your data.
Question: Why do I see so many "Timed out" messages on the Monitor display?
Answer: When Foxhound tries to connect to the target database, and it doesn't get any response at all (success or failure) before the
Foxhound Options - Connection Timeout
period expires, it displays the "Timed out" message and waits for the
Foxhound Options - Timeout Retry
period before trying again.
Normally you will only see one "Timed out" message in the Monitor display even when
many "Connection timout" exceptions
are recorded in the Foxhound database.
Sometimes, however, Foxhound will get a failed response like "Database server not found" before the timeout period expires, and
you will see alternating messages like this:
7:45:42 AM 2m 31.0s -- Timed out --
7:43:11 AM 0s -- Timed out at --
7:43:11 AM 15.0s -- Database server not found --
7:42:56 AM 1m 0.4s -- Database server not found at --
7:41:56 AM 22m 40.1s -- Timed out --
7:19:15 AM .1s -- Timed out at --
7:19:15 AM 15.0s -- Database server not found --
7:19:00 AM 1m 0.7s -- Database server not found at --
7:18:00 AM 2m 32.3s -- Timed out --
7:15:27 AM .1s -- Timed out at --
7:15:27 AM 15.0s -- Database server not found --
7:15:12 AM 1m 0.9s -- Database server not found at --
7:14:11 AM 16m 22.3s -- Timed out --
6:57:49 AM .1s -- Timed out at --
One workaround is to increase the
Foxhound Options - Connection Timeout
period to one minute. That may give Foxhound enough time to consistently receive the failed response before the timeout period expires.
It will also allow Foxhound to promptly connect to the target database when it becomes available.
If you are only monitoring one database, or if you are not experiencing any Foxhound performance issues related to
long waits for connection failure responses, try using the "never timeout" setting.
Question: Why does Foxhound issue Alert #1 - Database unresponsive immediately after Foxhound is started?
Answer: Foxhound does not actually issue Alert #1 right away, it waits for at least one minute
(or whatever the Alert #1 criteria has been set to) after Foxhound is started.
Here is an example where it looks like the Alert #1 was issued right after the
"Foxhound stopped" period ended. However, the timestamps
show that the "Foxhound stopped" period ended at 6:53:15 AM but the
Alert #1 wasn't issued until 6:55:26 AM:
6:55:39 AM 8.1s .1s / .1s 2 ...
6:55:36 AM ALL CLEAR - Alert #1: Foxhound has been unable to gather samples for 1m or longer.
6:55:31 AM 2m 16.2s .1s / .1s 2 ...
6:55:26 AM Alert #1: Foxhound has been unable to gather samples for 1m or longer.
6:53:15 AM 27.5s -- Foxhound stopped --
6:52:47 AM 1h 6m 41s -- Foxhound stopped at --
Question: Why does Foxhound keep sending emails even though "Send Alert emails" is unchecked on the Foxhound Options page?
Answer: Try unchecking "Send Alert emails" on the Alerts Criteria page for the target database instead.
You can reach the Alerts Criteria page for each target database by going to the Monitor page
for that database and clicking on the "Alerts Criteria" link at the top right. If you are monitoring
multiple target databases, you have to go to the Alerts Criteria page for each database and uncheck
"Send Alert emails" there.
There are four settings that appear on both the Foxhound Options page and the Alerts Criteria page
Send Alert emails: x
Email address(es) for Alerts: ...
Use HTML in emails: x
Host[:port] for URLs in emails: localhost
The values on the Alerts Criteria page for each target database are the values that are used at runtime.
The values on the Foxhound Options page are default values used to fill in the Alerts Criteria page
when monitoring is first started for a new target database. This is a one-time "fill in the values"
operation for each target database; later changes to any of these four values on the Foxhound Options
page will not affect any target database for which monitoring has already been started.
Question: Why does the Foxhound post-upgrade process take so long?
Answer: The Foxhound database can grow very large when there are a lot of connections to the target databases,
and when that sample data is maintained for a long time. All of that data must be copied from the old
Foxhound database to the new one when you install a new version of Foxhound, and that process can take a long time.
Question: Why doesn't the Foxhound backup process create the generation2 subfolder?
Answer: Here's the short answer: Look for two identical scheduled tasks and delete one of them.
You should also rename the generation1 subfolder to generation2 because that's the name it should have.
The database backup subfolders are stored here on Windows XP:
C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound1\backup
and on Vista and Windows 7 they are stored here:
C:\ProgramData\RisingRoad\Foxhound1\backup
Here is the long answer:
The Foxhound backup process
All Programs - Foxhound1 - Tools - Backup Foxhound Database
is supposed to save the most recent three generations of
backup files in three subfolders: generation1 (the oldest), generation2 and generation3 (the latest),
which are stored here on Windows XP:
C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound1\backup
On Vista and Windows 7 the three subfolders are stored here:
C:\ProgramData\RisingRoad\Foxhound1\backup
If you accidentally schedule two backup tasks to run at the same time using the technique described in
How do I backup my Foxhound database on a regular basis?
there will be a conflict. Here is a description of the symptoms and one possible cause:
If the Foxhound backup generation2 subfolder is missing, but generation1 and generation3 are present, and
the generation1 folder contains the second-most-recent backup (which normally would be stored
in generation2), it is possible that two instances of the Foxhound backup process were started
at the same time. If that is the case, the backup_log.txt diagnostic trace file in the
generation3 subfolder will show the overlap:
Thu 04/29/2010 1:00:00.33 *********************************
Thu 04/29/2010 1:00:00.33 *** Foxhound backup started
Thu 04/29/2010 1:00:00.78 *** Starting dbeng11 if necessary...
Thu 04/29/2010 1:00:00.78 *********************************
Thu 04/29/2010 1:00:00.78 *** Foxhound backup started
Thu 04/29/2010 1:00:00.78 *** Starting dbeng11 if necessary...
Thu 04/29/2010 1:00:02.11 *** Starting dbbackup...
Thu 04/29/2010 1:00:02.14 *** Starting dbbackup...
SQL Anywhere Backup Utility Version 11.0.1.2276
SQL Anywhere Backup Utility Version 11.0.1.2276
(463407 of 462632 pages, 100% complete)
Transaction log truncated
Database backup completed
(268235 of 267633 pages, 100% complete)
Transaction log truncated
Database backup completed
Thu 04/29/2010 1:06:22.96 *** Moving backup to the generation3 subfolder
Thu 04/29/2010 1:06:23.13 *** Foxhound backup OK
The Task Scheduler accessory in Windows Vista and Windows 7 makes it quite easy to accidentally create two
copies of the same scheduled task in two different task folders:
Delete one of the scheduled tasks to eliminate the conflict.
You should also rename the generation1 subfolder to generation2 because that's the name it should have:
Question: Why is Alert #1 - Database unresponsive issued and cleared with every sample gathered?
Answer:
Here's a quick workaround, to stop Foxhound from issuing so many Alert #1 - Database unresponsive messages...
Use the Alerts Criteria Page
to increase the threshold for Alert #1 - Database unresponsive from 1 minute
to some value larger than the time it takes the Foxhound Monitor to gather a
sample (the "Interval" time shown on the Monitor page).
Here's the long answer...
When the target database server is heavily overloaded, Foxhound may take longer than
one minute (or whatever the threshold is for Alert #1 - Database unresponsive) to
gather a sample. In that case Foxhound will issue Alert #1 while it's waiting for
the sample data to be returned, and then immediately issue an All Clear
when it does get the data.
This is new behavior for Foxhound. Previously, Alert #1 messages were only issued if
Foxhound failed to gather a successful sample. In this case, however, Foxhound isn't
actually failing to gather samples, it's just taking a long time.
The change was made because it is important for you to know when your server is
hopelessly overloaded as well as when it is completely unavailable. However, the
multiple Alert - ALL CLEAR messages are annoying, and something will probably be done
about that in the future.
The following image shows what "hopelessly overloaded" looks like. The target database
server is using 64% of a four-core CPU, but the server computer is actually running at 100%
CPU... it's also running a multi-threaded client application with 1003 database connections performing 7,400 database
update transactions per second. The client application wants to do more, but everything is maxed out, and
instead of recording a sample every 10 seconds, Foxhound is taking more than two minutes
for each one. To make matters worse, Foxhound is also running on the server computer; in
this case, the first step should be to move Foxhound and the client application to some
other computer(s).
Question: Why is Foxhound unresponsive when it starts?
Answer: This may be due to some problem that affects the normal ability of the Foxhound Monitor to
reconnect to target database(s) in order to resume sampling when Foxhound is restarted. This is not an
expected situation: even if Foxhound can't connect to the target databases it shouldn't become unresponsive.
In order to get Foxhound to respond so you can figure out what's going wrong, you can suppress the automatic reconnection process by
starting Foxhound in "safe mode",
also known as safe startup.
Here is an example of this scenario: A Foxhound Monitor session used the SQL Anywhere 11 ODBC driver to
connect to a local SQL Anywhere 8 target database server on a Windows Vista system where
no SQL Anywhere 8 ODBC driver software had been installed.
Not only did Foxhound become unresponsive, but restarting Foxhound didn't help until sampling was
stopped by using safe-mode startup.
Question: Why is it called "unsetup" instead of "uninstall"?
Answer: The Foxhound installation process involves more than just an InstallShield / Windows Installer "setup" step, it includes a "post-setup" step. When you run the InstallShield / Windows Installer "uninstall" process, it only reverses the actions performed by the original "setup" step, not the "post-setup" command file...
That's why around here we call it "unsetup" instead of "uninstall".
The unsetup process uses the Microsoft Windows Installer command MsiExec.exe /X{B6CE87CB-2838-49AC-9E48-6E867BDD4B93}
command to reverse the actions of the original Foxhound InstallShield setup process. The MsiExec.exe /X unsetup process
removes shortucts from Start menu,
deletes files that were copied to the hard drive by the original setup step, and
generally makes it possible to install Foxhound again.
The unsetup process does not affect any of the files that were moved or copied by the post-setup process. In particular, the unsetup process will not delete the Foxhound database. This fact makes it possible to upgrade an existing database by first running unsetup and then installing a new version of Foxhound.
If you want to completely remove Foxhound from your system, you have to run the unsetup process and then manually delete the Foxhound folder.
By default, Foxhound is installed in this location on Windows XP:
C:\Documents and Settings\All Users\Application Data\RisingRoad\Foxhound1
Question: Why is the Alert #15 threshold still set at 10 incomplete file I/O operations, instead of the new default value of 256?
Answer: The factory setting for Alert #15 was changed from 10 to 256 incomplete file I/O operations in build 3677.
However, when you installed an earlier build of Foxhound, you became responsible for making any changes to
Alerts Criteria settings stored for each target database, plus any changes made to the default settings.
The data upgrade process to build 3677 or later only changed the factory settings and the extreme settings.
If you want to use the new Factory Settings for a target database, press the Restore Factory Settings button on
the Alerts Criteria page for that database.
If you then want those settings to be used as the defaults for future target databases, press Save Settings as Default.
There are four kinds of Alerts Criteria settings:
One set for each target database, copied from the default settings when you start sampling that database and under your control after that,
the default settings, set to the factory settings with the first installation and under your control after that via Save Settings as Default,
the factory settings, delivered with each installation and available for you to copy to the current target database settings via Restore Factory Settings, and
the extreme settings, delivered with each installation and available for you to copy to the current target database settings via Use Extreme Settings.
Question: Why is the "bytes per row" larger than the actual amount of data in each row?
Answer: The bytes per row amount is based on the disk space used for table data, extension and index pages. It doesn't include free pages in the database, but it does count free space in pages allocated to this table. As such, this number is usually larger, sometimes quite a bit larger, than the average number of bytes a query might return. To avoid showing inflated numbers for very small tables, the bytes per row is only shown for tables with at least 2 data or 2 extension pages.
Question: Why won't the sample connection strings on the String tab work on Vista or Windows 7?
Answer: The samples on the String tab are coded for Windows XP, not Vista or Windows 7. For example, the path for
the DBF parameter in the SQL Anywhere 11 Demo looks like this for XP:
DBF=C:\Documents and Settings\All Users\Documents\SQL Anywhere 11\Samples\demo.db
Question: Why won't the target database auto-start when Foxhound tries to connect to it?
Answer: The answer depends on whether Foxhound is connecting via the DSN tab or the String tab.
If you are connecting via the DSN tab Foxhound uses AUTOSTART=NO and AutoStop=NO even if you have
specified something different inside the ODBC DSN. The reason is this: In general, folks don't want
Foxhound auto-starting and auto-stopping their databases, they want that functionality reserved
for their applications.
In this case, you will have to start the database before trying to get Foxhound to connect to it.
For example, you can use the ODBC Administrator Test Connection button, or run your application to
auto-start the database, or start the engine via a command-line script (batch file).
If you are connecting via the String tab Foxhound also defaults to AUTOSTART=NO and AutoStop=NO,
but you can override that with an explicit AUTOSTART=YES if you want.