Browse files

added start of nginx test

  • Loading branch information...
1 parent fba3b60 commit 437581056cd3fd91d0c9e7c813daf92ad36f4653 @itsderek23 itsderek23 committed Apr 3, 2012
@@ -0,0 +1,6 @@
+# MySQL Thread Pool Monitoring
+This plugin monitors the [MySQL Thread Pool]( by tracking the rate-of-change of the important fields from the [`INFORMATION_SCHEMA TP_THREAD_GROUP_STATS` Table](
+Sudden spikes indicate abnormal events (esp. regarding the `*_WAITS` fields).
+Created by [Jon Bardin](
@@ -1,85 +1,7 @@
-# Monitors MySQL thread pool plugin
-# Charts the rate-of-change of the important fields from the INFORMATION_SCHEMA TP_THREAD_GROUP_STATS Table
-# Sudden spikes indicate abnormal events esp. regarding the *_WAITS fields
-# This table reports statistics per thread group. There is one row per group. The table has these columns:
-# The thread group ID. This is a unique key within the table.
-# The number of connections started.
-# The number of connections closed.
-# The number of statements executed. This number is incremented when a statement starts executing, not when it finishes.
-# The number of statements received that were queued for execution. This does not count statements that the thread group was able to begin executing immediately without queuing, which can happen under the conditions described in Section, “Thread Pool Operation”.
-# The number of threads started.
-# The number of statements that have been moved from low-priority queue to high-priority queue based on the value of the thread_pool_prio_kickup_timer system variable. If this number increases quickly, consider increasing the value of that variable. A quickly increasing counter means that the priority system is not keeping transactions from starting too early. For InnoDB, this most likely means deteriorating performance due to too many concurrent transactions..
-# The number of statements that have become defined as stalled due to executing for a time longer than the value of the thread_pool_stall_limit system variable.
-# The number of times thread have been assigned the consumer thread role.
-# The number of times threads have been assigned the reserve thread role.
-# The number of times threads have been assigned the waiter thread role. When statements are queued, this happens very often, even in normal operation, so rapid increases in this value are normal in the case of a highly loaded system where statements are queued up.
-# The number of times the stall check thread decided to wake or create a thread to possibly handle some statements or take care of the waiter thread role.
-# The number of THD_WAIT_SLEEP waits. These occur when threads go to sleep; for example, by calling the SLEEP() function.
-# The number of THD_WAIT_DISKIO waits. These occur when threads perform disk I/O that is likely to not hit the file system cache. Such waits occur when the buffer pool reads and writes data to disk, not for normal reads from and writes to files.
-# The number of THD_WAIT_ROW_LOCK waits for release of a row lock by another transaction.
-# The number of THD_WAIT_GLOBAL_LOCK waits for a global lock to be released.
-# The number of THD_WAIT_META_DATA_LOCK waits for a metadata lock to be released.
-# The number of THD_WAIT_TABLE_LOCK waits for a table to be unlocked that the statement needs to access.
-# The number of THD_WAIT_USER_LOCK waits for a special lock constructed by the user thread.
-# The number of THD_WAIT_BINLOG_WAITS waits for the binary log to become free.
-# The number of THD_WAIT_GROUP_COMMIT waits. These occur when a group commit must wait for the other parties to complete their part of a transaction.
-# The number of THD_WAIT_SYNC waits for a file sync operation.
require 'time'
require 'date'
+# Created by Jon Bardin
class MysqlThreadPoolMonitor < Scout::Plugin
needs 'mysql'
@@ -140,7 +62,7 @@ def build_report
+ private
def fetch_all_rows_as_hash(result)
rows = []
@@ -0,0 +1,4 @@
+Active connections: 183
+server accepts handled requests
+ 914384 914384 2725561
+Reading: 3 Writing: 2 Waiting: 178
@@ -0,0 +1,27 @@
+require File.expand_path('../../test_helper.rb', __FILE__)
+require File.expand_path('../nginx_report.rb', __FILE__)
+require 'open-uri'
+class NginxReportTest < Test::Unit::TestCase
+ def setup
+ end
+ def teardown
+ FakeWeb.clean_registry
+ end
+ def test_initial_run
+ uri=""
+ FakeWeb.register_uri(:get, uri,
+ [
+ {:body =>'/fixtures/nginx_status.txt')},
+ {:body => nil}
+ ]
+ )
+ @plugin =,{},{})
+ @res =
+ pp @res
+ end

0 comments on commit 4375810

Please sign in to comment.