- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
squid分析squid分析
1.重要变量
static MemPoolMeter TheMeter;
static Stack Pools; 全局内存栈,在程序启动时该栈初始化,整个程序中需要的内存。
static MemPool *MemPools[MEM_MAX]; (MEM_MAX值为49-52)不用大小的内存块
int store_hash_buckets storage对象的最大数
RemovalPolicy *mem_policy; storage置换策略
hash_table *store_table = NULL; storage哈希列表
int client_pconn_hist[PCONN_HIST_SZ];
int server_pconn_hist[PCONN_HIST_SZ];
static MemPool *pconn_data_pool = NULL;
static MemPool *pconn_fds_pool = NULL;
action_table *ActionTable = NULL;
fde *fd_table 全局数组,存放fd,处理函数等
static hash_table *client_table = NULL; http原始请求客户端,static struct ev_entry *tasks = NULL; 全局事件链表,主循环中依次执行注册到该链表的事件,事件管理见Event.c文件
2.重要数据结构
MemPoolMetertypedef struct _MemPoolMeter MemPoolMeter;
struct _MemPoolMeter {
MemMeter alloc;
MemMeter inuse;
MemMeter idle;
gb_t saved;
gb_t total;
};
Stack
typedef Array Stack;
typedef struct {
int capacity;
int count;
void **items;
} Array;
MemPool
typedef struct _MemPool MemPool;
struct _MemPool {
const char *label;
size_t obj_size;
#if DEBUG_MEMPOOL
size_t real_obj_size; /* with alignment */
#endif
Stack pstack; /* stack for free pointers */
MemPoolMeter meter;
#if DEBUG_MEMPOOL
MemPoolMeter diff_meter;
#endif
};
hash_table
typedef struct _hash_table hash_table;
struct _hash_table {
hash_link **buckets;
HASHCMP *cmp;
HASHHASH *hash;
unsigned int size;
unsigned int current_slot;
hash_link *next;
int count;
};
hash_link
typedef struct _hash_link hash_link;
struct _hash_link {
void *key;
hash_link *next;
};
fde
typedef struct _fde fde;
struct _fde {
unsigned int type;
u_short local_port;
u_short remote_port;
struct in_addr local_addr;
unsigned char tos;
char ipaddr[16]; /* dotted decimal address of peer */
char desc[FD_DESC_SZ];
struct {
unsigned int open:1;
unsigned int close_request:1;
unsigned int write_daemon:1;
unsigned int closing:1;
unsigned int socket_eof:1;
unsigned int nolinger:1;
unsi
文档评论(0)