lukevenediger / statsd.net

A high-performance stats collection service that feeds into Graphite and aimed at small- to large-scale windows environments.
MIT License
123 stars 25 forks source link

Send metrics to HTTP protocol performance issue #47

Closed keyboardfann closed 6 years ago

keyboardfann commented 6 years ago

Hi, When I send metrics to statsd.net HTTP port, there is no error in statsd.net log, but the performance is very slow, 1min can send/receive 7xx metrics. Does anyone meets the problem or has the suggestion to resolve it?

statsdnet.config

<?xml version="1.0" encoding="utf-8" ?>
<statsdnet name="TNG-DMZ-2">
    <listeners>
    <tcp port="12222" />
        <tcp port="443" />
        <udp port="80" />
        <http port="80" allowCors="*" />
        <udp port="12000" />
    </listeners> 
    <aggregation flushInterval="1m">
        <gauges namespace="stats.gauges" removeZeroGauges="true" />
        <counters namespace="stats_counts" />
        <sets namespace="stats.sets" />
        <timers namespace="stats.timers" calculateSumSquares="false">
            <percentile name="p90-5min" threshold="90" flushInterval="5m" />
            <percentile name="p90-1hour" threshold="90" flushInterval="1h" />
            <percentile name="p50-1hour" threshold="50" flushInterval="1h" />
        </timers>
    </aggregation>
    <backends>
        <console />
        <graphite host="x.x.x.x" port="2003" />
        <sqlserver connectionString="server=x.x.x.x;database=x;uid=x;password=x"
                   writeBatchSize="100" />
    </backends>
</statsdnet>

Reproduce Step(python code):

import requests,time

while True:
  print i
  r = requests.post("http://x.x.x.x", data='fanntest.http.test:1|c')
  print(r.status_code, r.reason)

Result: https://imgur.com/a/nBXSt

keyboardfann commented 6 years ago

After verification, the problem happens on our F5 device. So it's not related to statsd.net and I close it.