^^^^^^^^^^^^^^^
Number of entries in the metadata cache
+.. _stat-open-tcp-connections:
+
+open-tcp-connections
+~~~~~~~~~~~~~~~~~~~~
+Number of currently open TCP connections
+
.. _stat-overload-drops:
overload-drops
}
+static uint64_t getTCPConnectionCount(const std::string& str)
+{
+ return TN->numTCPConnections();
+}
+
static uint64_t getQCount(const std::string& str)
try
{
S.declare("tcp6-queries","Number of IPv6 TCP queries received");
S.declare("tcp6-answers","Number of IPv6 answers sent out over TCP");
-
+
+ S.declare("open-tcp-connections","Number of currently open TCP connections", getTCPConnectionCount);;
S.declare("qsize-q","Number of questions waiting for database attention", getQCount);
pthread_mutex_t TCPNameserver::s_plock = PTHREAD_MUTEX_INITIALIZER;
Semaphore *TCPNameserver::d_connectionroom_sem;
+unsigned int TCPNameserver::d_maxTCPConnections = 0;
PacketHandler *TCPNameserver::s_P;
NetmaskGroup TCPNameserver::d_ng;
size_t TCPNameserver::d_maxTransactionsPerConn;
// sem_init(&d_connectionroom_sem,0,::arg().asNum("max-tcp-connections"));
d_connectionroom_sem = new Semaphore( ::arg().asNum( "max-tcp-connections" ));
+ d_maxTCPConnections = ::arg().asNum( "max-tcp-connections" );
d_tid=0;
vector<string>locals;
stringtok(locals,::arg()["local-address"]," ,");
}
+unsigned int TCPNameserver::numTCPConnections()
+{
+ int room;
+ d_connectionroom_sem->getValue( &room);
+ return d_maxTCPConnections - room;
+}
TCPNameserver();
~TCPNameserver();
void go();
+ unsigned int numTCPConnections();
private:
static void sendPacket(std::shared_ptr<DNSPacket> p, int outsock);
static PacketHandler *s_P;
pthread_t d_tid;
static Semaphore *d_connectionroom_sem;
+ static unsigned int d_maxTCPConnections;
static NetmaskGroup d_ng;
static size_t d_maxTransactionsPerConn;
static size_t d_maxConnectionsPerClient;
incoming-notifications=0
key-cache-size=0
meta-cache-size=3
+open-tcp-connections=0
overload-drops=0
packetcache-size=4
qsize-q=0