workerごとのカウンタの話
どのworkerに配送するかの判定にはリクエスト数および転送量でのバランシングがデフォルトで提供されており、ということはつまり、いつかは溢れる。
ちょっと気になったので定義を調べてみた。mod_proxy.h内。
/* Runtime worker status informations. Shared in scoreboard */ typedef struct { int status; apr_time_t error_time; /* time of the last error */ int retries; /* number of retries on this worker */ int lbstatus; /* Current lbstatus */ int lbfactor; /* dynamic lbfactor */ apr_off_t transferred;/* Number of bytes transferred to remote */ apr_off_t read; /* Number of bytes read from remote */ apr_size_t elected; /* Number of times the worker was elected */ char route[PROXY_WORKER_MAX_ROUTE_SIZ+1]; char redirect[PROXY_WORKER_MAX_ROUTE_SIZ+1]; void *context; /* general purpose storage */ apr_size_t busy; /* busyness factor */ int lbset; /* load balancer cluster set */ } proxy_worker_stat;
リクエストカウンタ
apr_size_t
の実体はsize_t
なので、符号無し32bit整数値だとすると、最大で4294967296となる。
workerあたり1日に30万ヒットの場合は39年再起動無しだと溢れるらしい。
……Googleが使うなら現実的に注意すべきかなあ、とかそれくらい?w
転送量カウンタ
apr_off_t
の実体はoff64_t
なので、……これって符号無し64bitだよね。
workerあたり、2GBのファイルが1日に30万回ダウンロードされると、78年再起動無しで溢れるらしい。
さすがのGoogle様でもなかなか厳しそうだ。
結論
心配しなくてヨシ。