developer's diary

最近はc#のエントリが多いです

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();
    }
}


続きは↓
C初心者がmemcached-1.4.5を追いかける。(27)(Bオプション)