Arquivos
hhvm/hphp/doc/server.stats
T
Jordan Delong 363d1bb20f Code move src/ -> hphp/
This change is mostly for FB internal organizational reasons.
Building is not effected beyond the fact that the target now
lands in hphp/hhvm/hhvm rather than src/hhvm/hhvm.
2013-02-11 02:10:41 -08:00

187 linhas
5.5 KiB
Plaintext

<h2>Server Stats</h2>
For each page, we collect stats by time slots. Each time slot is configured as
StatsSlotDuration seconds and server internally keeps StatsMaxSlot number of
slots. Inside each slot, we keep a set of stats by page or URL. These stats
include 3 built-in ones ("url", "code" and "hit") and many key-value pairs
defined by different parts of the system.
slot:
time:
pages:
page:
url: original URL
code: return code
hit: total counts
details:
key-value pair
key-value pair
key-value pair
...
<h2>Stats Query</h2>
To query stats, hit admin port with a URL like this,
http://[server]:8088/stats.[fmt]?from=[t1]&to=[t2]...
from: (optional) starting time's timestamp (e.g. 1251927393),
- use -n for n seconds ago
- when omitted or 0, it will be the earliest possible time server keeps
to: (optional) ending time's timestamp,
- use -n for n seconds ago
- when omitted or 0, it will be "now"
agg: (optional) aggregation, can be any one of these,
* aggregate all data into one list of key value pairs
url aggregate all data by URLs
code aggregate all data by response code
(omitted) default by time slots
keys: (optional) comma delimited keys to query, each of which can be decorated
[key] just the key's value, e.g. "sql.conn"
[key]/hit average per page hit, e.g. "sql.conn/hit"
[key]/sec per second rate, e.g. "sql.conn/sec"
#[regex]# keys matching the regular expression
(omitted) all available keys
url: (optional) only output stats matching the specified URL
code: (optional) only output stats of pages that have response code
[fmt]: can be one of these:
xml XML format
json JSON format
kvp simple key-value pairs in JSON format, assuming agg=*
<h2>Available Keys</h2>
1. SQL Stats:
(1) Connections
sql.conn: number of connections newly created
sql.reconn_new: number of connections newly created when trying to reconnect
sql.reconn_ok: number of connections re-picked up when trying to reconnect
sql.reconn_old: number of connections dropped when trying to reconnect
(2) Queries
sql.query: number of queries executed
sql.query.[table].[verb]: per table-verb stats
sql.query.[verb]: per verb stats, where [verb] can be one of these:
- select
- insert
- update
- replace
- delete
- begin
- commit
- rollback
- unknown
2. MemCache Stats:
mcc.madd: number of multi_add() calls
mcc.madd.count: total count of multi added keys
mcc.mreplace: number of multi_replace() calls
mcc.mreplace.count: total count of multi replaced keys
mcc.set: number of set() calls
mcc.add: number of add() calls
mcc.decr: number of decr() calls
mcc.incr: number of incr() calls
mcc.delete: number of delete() calls
mcc.delete_details: number of delete_details() calls
mcc.get: number of get() calls
mcc.mget: number of multi_get() calls
mcc.mget.count: total count of multi got keys
mcc.replace: number of replace() calls
mcc.set: number of set() calls
mcc.stats: number of stats() calls
3. APC Stats:
apc.miss: number of item misses
apc.hit: number of item hits
apc.update: number of item updates
apc.new: number of new items
apc.erased: number of successfully erased items
apc.erase: number of items that failed to erase (because they were absent)
apc.inc: number of inc() call
apc.cas: number of cas() call
4. Memory Stats:
These two stats are only available when Google heap profler is turned on for
debugging purposes:
mem.malloc.peak: peak malloc()-ed memory
mem.malloc.leaked: leaked malloc()-ed memory
5. Page Sections:
page.wall.[section]: wall time a page section takes
page.cpu.[section]: CPU time a page section takes
mem.[section]: SmartAllocator memory a page section takes
network.uncompressed: total bytes to be sent before compression
network.compressed: total bytes sent after compression
Section can be one of these:
- queuing
- all
- input
- invoke
- send
- psp
- rollback
- free
6. evhttp Stats:
- evhttp.hit used cached connection
- evhttp.hit.[address] used cached connection by URL
- evhttp.miss no cached connection available
- evhttp.miss.[address] no cached connection available by URL
- evhttp.close cached connection got closed
- evhttp.close.[address] cached connection got closed by URL
- evhttp.skip not set to use cached connection
- evhttp.skip.[address] not set to use cached connection by URL
7. Application Stats:
PHP page can collect application-defined stats by calling
hphp_stats($key, $count);
where $key is arbitrary and $count will be tallied across different calls of
the same key.
8. Special Keys:
hit: page hit
load: number of active worker threads
idle: number of idle worker threads
<h2>Example URL</h2>
GET "http://localhost:8088/stats.kvp?prefix=hphp&agg=*" \
"&keys=apc.hit/sec,hit,load,:sql.query..*.select:," \
"network.compressed/hit,hit/sec"
This URL queries the following data:
hit: page hits
hit/sec: request per second
apc.hit/sec: APC hit per second
load: number of active threads currently
network.compressed/hit: sent bytes per request
:sql.query..*.select: all SELECTs on different tables