null+****@clear*****
null+****@clear*****
2010年 12月 13日 (月) 23:02:47 JST
Tasuku SUENAGA a.k.a. gunyarakun 2010-12-13 14:02:47 +0000 (Mon, 13 Dec 2010)
New Revision: 65e3934a7f25e17b75b1c3cd82b75ef268563fbd
Log:
Limited queue size of httpd-learner connections.
Modified files:
src/suggest/groonga_suggest_httpd.c
src/suggest/groonga_suggest_learner.c
Modified: src/suggest/groonga_suggest_httpd.c (+3 -0)
===================================================================
--- src/suggest/groonga_suggest_httpd.c 2010-12-13 13:54:54 +0000 (5b042e4)
+++ src/suggest/groonga_suggest_httpd.c 2010-12-13 14:02:47 +0000 (ab3a62f)
@@ -564,6 +564,9 @@ serve_threads(int nthreads, int port, const char *db_path, void *zmq_ctx,
print_error("cannot connect zmq_socket.");
zmq_close(thds[i].zmq_sock);
thds[i].zmq_sock = NULL;
+ } else {
+ uint64_t hwm = 1;
+ zmq_setsockopt(thds[i].zmq_sock, ZMQ_HWM, &hwm, sizeof(uint64_t));
}
} else {
thds[i].zmq_sock = NULL;
Modified: src/suggest/groonga_suggest_learner.c (+5 -4)
===================================================================
--- src/suggest/groonga_suggest_learner.c 2010-12-13 13:54:54 +0000 (e8a9941)
+++ src/suggest/groonga_suggest_learner.c 2010-12-13 14:02:47 +0000 (8245d01)
@@ -319,6 +319,8 @@ send_to_httpd(void *arg)
if (!(grn_ctx_init(&ctx, 0))) {
if ((grn_db_open(&ctx, thd->db_path))) {
while (loop) {
+ uint64_t hwm = 1;
+ zmq_setsockopt(zmq_send_sock, ZMQ_HWM, &hwm, sizeof(uint64_t));
send_handler(zmq_send_sock, &ctx);
}
} else {
@@ -417,10 +419,10 @@ static void
event_loop(msgpack_zone *mempool, void *zmq_sock, grn_ctx *ctx)
{
grn_obj buf;
- GRN_TEXT_INIT(&buf, 0);
zmq_pollitem_t items[] = {
{ zmq_sock, 0, ZMQ_POLLIN, 0}
};
+ GRN_TEXT_INIT(&buf, 0);
while (loop) {
zmq_poll(items, 1, 10000);
if (items[0].revents & ZMQ_POLLIN) { /* always true */
@@ -473,8 +475,6 @@ main(int argc, char **argv)
/* parse options */
{
int ch;
- extern char *optarg;
- extern int optind, opterr;
while ((ch = getopt(argc, argv, "r:s:")) != -1) {
switch(ch) {
@@ -494,9 +494,10 @@ main(int argc, char **argv)
usage(stderr);
} else {
grn_ctx *ctx;
- grn_init();
msgpack_zone *mempool;
+ grn_init();
+
signal(SIGTERM, signal_handler);
signal(SIGINT, signal_handler);
signal(SIGQUIT, signal_handler);