C初心者がmemcached-1.4.5を追いかける。(26)
C初心者がmemcached-1.4.5を追いかける。(25)の続き
ソースはコチラにてDLしました。
getoptで受け取ったパラメータによって処理を行っている部分を追いかける。
memcached.c(4420行目あたり)
case 'b' : settings.backlog = atoi(optarg); break;
"b:" /* backlog queue limit */
settings.backlogに引数を設定
settings.backlog のデフォルトは1024 memcached.c(195行目あたり)
settings.backlog = 1024;
このオプションは第1回 memcachedの起動オプションを把握しよう|gihyo.jp … 技術評論社にわかりやすくかいていました。
memcachedで処理待ちとなっている接続キューの最大数
listenシステムコールの第2引数(int backlog)で利用されていました。
/* * Sets whether we are listening for new connections or not. */ void do_accept_new_conns(const bool do_accept) { conn *next; for (next = listen_conn; next; next = next->next) { if (do_accept) { update_event(next, EV_READ | EV_PERSIST); if (listen(next->sfd, settings.backlog) != 0) { /* ←ココ */ perror("listen"); } } else { update_event(next, 0); if (listen(next->sfd, 0) != 0) { perror("listen"); } } } if (do_accept) { STATS_LOCK(); stats.accepting_conns = true; STATS_UNLOCK(); } else { STATS_LOCK(); stats.accepting_conns = false; stats.listen_disabled_num++; STATS_UNLOCK(); } }