|
From: | Derrick Bradbury |
Subject: | [libmicrohttpd] Server Loads |
Date: | Fri, 23 Aug 2013 18:30:04 +0000 |
Hi all...
Just wanting to see if anyone has noticed this before. We're running an application in an envirionment and it seems to handle requests up to about 7500/second... Soon as we start creeping over that strange things happnen. Requests that are at max allowed to run for 6ms take > 10 seconds, connections timeout, and random server reboots (this one may be a xen thing). I have a little script that collects the reqeusts and then does some analysis on it: AVG:0.0229191 MIN: 0.000010 MAX: 7.403612 CNT:83403 0ms:36307 1ms:10847 2ms:5135 3ms:3357 4ms:2606 5ms:2119 6ms - Warning:1775 Timeout:21257 Err:4352 Our MINIMUM response time at about 12,000 requests/second is 0.00001 seconds... and the maximum is 7.4 seconds. And the high number of TIMEOUTS is concerning, as the app shouldn't allow that. Basically the app takes a URL and submits it to a 3rd party database to be classified. I have a 6ms timeout so there really shouldn't be anything > 6ms, but I'm getting a lot of timeouts. Some bits of code: struct MHD_Daemon *daemon; daemon = MHD_start_daemon (MHD_USE_SELECT_INTERNALLY | MHD_USE_EPOLL_LINUX_ONLY | MHD_USE_EPOLL_TURBO, options.port, NULL, NULL, &answer_to_connection, NULL, MHD_OPTION_THREAD_POOL_SIZE, (unsigned int) options.threads, MHD_OPTION_CONNECTION_LIMIT, (unsigned int) 12000, MHD_OPTION_END); THe code where I have a timeout at 6ms: try { if (!ready) throw 997; iurl = MHD_lookup_connection_value (connection, MHD_GET_ARGUMENT_KIND, options.key); if (!iurl) throw 997; if (options.strip_path && strlen(iurl) > 35) iurl=strip_path(iurl); if (strcmp("facebook.com",(char*)iurl) == 0 && options.client) { page = "76\n78\n80\n"; } else { boost::thread cls(classify_url,iurl,boost::ref(rp),internalid); if(!cls.timed_join(boost::posix_time::milliseconds(options.timeout))) { cls.interrupt(); timeout_counter++; page=(options.client)?"998\n":"{\"c\": [998]}"; } else page = rp.c_str(); } } catch(...) { bad_counter++; page=(options.client)?"997\n":"{\"c\": [997]}"; } |
[Prev in Thread] | Current Thread | [Next in Thread] |