forked from swoole/swoole-src
-
Notifications
You must be signed in to change notification settings - Fork 1
/
swoole_config.h
222 lines (171 loc) · 8.08 KB
/
swoole_config.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
/*
+----------------------------------------------------------------------+
| Swoole |
+----------------------------------------------------------------------+
| This source file is subject to version 2.0 of the Apache license, |
| that is bundled with this package in the file LICENSE, and is |
| available through the world-wide-web at the following url: |
| http://www.apache.org/licenses/LICENSE-2.0.html |
| If you did not receive a copy of the Apache2.0 license and are unable|
| to obtain it through the world-wide-web, please send a note to |
| license@swoole.com so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Tianfeng Han <mikan.tenny@gmail.com> |
+----------------------------------------------------------------------+
*/
#ifndef SWOOLE_CONFIG_H_
#define SWOOLE_CONFIG_H_
#define SW_MAX_FDTYPE 32 //32 kinds of event
#define SW_ERROR_MSG_SIZE 512
#define SW_MAX_WORKER_GROUP 2
#define SW_MAX_FILE_CONTENT (64*1024*1024) //for swoole_file_get_contents
#define SW_MAX_LISTEN_PORT 128 //allows up to 128 ports to listen
#define SW_USE_EVENT_TIMER
//#define SW_USE_RINGBUFFER
//#define SW_DEBUG_REMOTE_OPEN
#define SW_DEBUG_SERVER_HOST "127.0.0.1"
#define SW_DEBUG_SERVER_PORT 9999
#define SW_SOCKET_OVERFLOW_WAIT 100
#if __MACH__
#define SW_SOCKET_BUFFER_SIZE (256*1024)
#else
#define SW_SOCKET_BUFFER_SIZE (8*1024*1024)
#endif
#define SW_GLOBAL_MEMORY_PAGESIZE (1024*1024*2) //全局内存的分页
#define SW_MAX_THREAD_NCPU 4 // n * cpu_num
#define SW_MAX_WORKER_NCPU 1000 // n * cpu_num
#define SW_MAX_REQUEST 5000 //最大请求包数
//#define SW_CONNECTION_LIST_EXPAND (4096*2) //动态扩容的数量
//#define SW_DEBUG //debug
#define SW_LOG_NO_SRCINFO //no source info
#define SW_LOG_TRACE_OPEN 0
//#define SW_BUFFER_SIZE 65495 //65535 - 28 - 12(UDP最大包 - 包头 - 3个INT)
#define SW_CLIENT_BUFFER_SIZE 65535
#define SW_CLIENT_RECV_AGAIN
#define SW_CLIENT_DEFAULT_TIMEOUT 0.5
#define SW_CLIENT_MAX_PORT 65535
//#define SW_CLIENT_SOCKET_WAIT
//!!!Don't modify.----------------------------------------------------------
#if __MACH__
#define SW_IPC_MAX_SIZE 2048 //MacOS
#else
#define SW_IPC_MAX_SIZE 8192 //for IPC, dgram and message-queue max size
#endif
#ifdef SW_USE_RINGBUFFER
#define SW_BUFFER_SIZE 65535
#else
#define SW_BUFFER_SIZE (SW_IPC_MAX_SIZE - sizeof(struct _swDataHead))
#endif
//!!!End.-------------------------------------------------------------------
#define SW_BUFFER_SIZE_BIG 65536
#define SW_SENDFILE_TRUNK 65536
#define SW_SENDFILE_MAXLEN 4194304
#define SW_HASHMAP_KEY_MAXLEN 256
#define SW_HASHMAP_INIT_BUCKET_N 32 //hashmap初始化时创建32大小的桶
#define SW_DATA_EOF "\r\n\r\n"
#define SW_DATA_EOF_MAXLEN 8
#define SW_HEARTBEAT_PING_LEN 8
#define SW_HEARTBEAT_PONG_LEN 8
#define SW_MAINREACTOR_USE_UNSOCK 1 //主线程使用unsock
#define SW_REACTOR_WRITER_TIMEO 3 //writer线程的reactor
#define SW_TASKWAIT_TIMEOUT 0.5
#ifdef HAVE_EVENTFD
#define HAVE_LINUX_AIO
#endif
#define SW_AIO_THREAD_NUM_DEFAULT 2
#define SW_AIO_THREAD_NUM_MAX 32
#define SW_AIO_MAX_FILESIZE 4194304 //4M
#define SW_AIO_EVENT_NUM 128
//#define SW_AIO_THREAD_USE_CHANNEL
#define SW_AIO_MAX_EVENTS 128
//#define SW_THREADPOOL_USE_CHANNEL
#define SW_THREADPOOL_QUEUE_LEN 10000
#define SW_IP_MAX_LENGTH 32
#define SW_USE_WRITER_THREAD 0 //使用单独的发送线程
#define SW_WORKER_SENDTO_COUNT 32 //写回客户端失败尝试次数
#define SW_WORKER_SENDTO_YIELD 10 //yield after sendto
#define SW_WORKER_READ_COUNT 10
#define SW_WORKER_WAIT_PIPE
#define SW_WORKER_WAIT_TIMEOUT 1000
//#define SW_WORKER_RECV_AGAIN
#define SW_WORKER_USE_SIGNALFD
//#define SW_WORKER_SEND_CHUNK
#define SW_MAINREACTOR_USE_POLL //main thread to use select or poll
#define SW_REACTOR_TIMEO_SEC 3
#define SW_REACTOR_TIMEO_USEC 0
#define SW_REACTOR_SCHEDULE 2
#define SW_REACTOR_MINEVENTS 128
#define SW_REACTOR_MAXEVENTS 4096
#define SW_REACTOR_USE_SESSION
#define SW_SESSION_LIST_SIZE (1024*1024)
#define SW_MSGMAX 8192
/**
* 最大Reactor线程数量,默认会启动CPU核数的线程数
* 如果超过8核,默认启动8个线程
*/
#define SW_REACTOR_MAX_THREAD 8
/**
* 循环从管道中读取数据,有助于缓解管道缓存塞满问题,降低进程间通信的压力
*/
#define SW_REACTOR_RECV_AGAIN
#define SW_REACTOR_SYNC_SEND //direct send
#define SW_SCHEDULE_INTERVAL 32 //平均调度的间隔次数,减少运算量
#define SW_QUEUE_SIZE 100 //缩减版的RingQueue,用在线程模式下
#define SW_WRITER_TIMEOUT 3
#define SW_RINGQUEUE_USE 0 //使用RingQueue代替系统消息队列,此特性正在测试中,启用此特性会用内存队列来替代IPC通信,会减少系统调用、内存申请和复制,提高性能
#define SW_RINGQUEUE_LEN 1024 //RingQueue队列长度
#define SW_RINGQUEUE_MEMSIZE (1024*1024*4) //内存区大小,默认分配4M的内存
//#define SW_USE_RINGQUEUE_TS 1 //使用线程安全版本的RingQueue
#define SW_RINGBUFFER_COLLECT_N 100 //collect max_count
#define SW_RINGBUFFER_FREE_N_MAX 4 //when free_n > MAX, execute collect
#define SW_RINGBUFFER_WARNING 100
//#define SW_RINGBUFFER_DEBUG
/**
* ringbuffer memory pool size
*/
#define SW_BUFFER_OUTPUT_SIZE (1024*1024*2)
#define SW_BUFFER_INPUT_SIZE (1024*1024*2)
#define SW_PIPE_BUFFER_SIZE (1024*1024*32)
#define SW_MEMORY_POOL_SLAB_PAGE 10 //内存池的页数
#define SW_USE_FIXED_BUFFER
#define SW_BACKLOG 512
/**
* 是否循环accept,可以一次性处理完全部的listen队列,用于大量并发连接的场景
*/
#define SW_ACCEPT_AGAIN 1
/**
* 一次循环的最大accept次数
*/
#define SW_ACCEPT_MAX_COUNT 64
#define SW_TCP_KEEPCOUNT 5
#define SW_TCP_KEEPIDLE 3600 //1 hour
#define SW_TCP_KEEPINTERVAL 60
//#define SW_USE_EPOLLET
#define SW_USE_EVENTFD //是否使用eventfd来做消息通知,需要Linux 2.6.22以上版本才会支持
#define SW_TASK_TMP_FILE "/tmp/swoole.task.XXXXXX"
#define SW_TASK_TMPDIR_SIZE 128
#define SW_FILE_CHUNK_SIZE 65536
#define SW_TABLE_CONFLICT_PROPORTION 0.2 //20%
#define SW_TABLE_COMPRESS_PROPORTION 0.5 //50% skip, will compress the row list
//#define SW_TABLE_USE_PHP_HASH
//#define SW_TABLE_DEBUG
#define SW_SSL_BUFSIZE 16384
#define SW_SPINLOCK_LOOP_N 1024
#define SW_STRING_BUFFER_MAXLEN (1024*1024*128)
#define SW_STRING_BUFFER_DEFAULT 128
#define SW_SIGNO_MAX 128
#define SW_DNS_LOOKUP_USE_THREAD
#define SW_HTTP_SERVER_SOFTWARE "swoole-http-server"
#define SW_HTTP_BAD_REQUEST "<h1>400 Bad Request</h1>\r\n"
#define SW_HTTP_PARAM_MAX_NUM 128
#define SW_HTTP_COOKIE_KEYLEN 128
#define SW_HTTP_COOKIE_VALLEN 2048
#define SW_HTTP_RESPONSE_INIT_SIZE 65536
#define SW_HTTP_HEADER_MAX_SIZE 8192
#define SW_HTTP_COMPRESS_GZIP
#define SW_HTTP_UPLOAD_TMP_FILE "/tmp/swoole.upfile.XXXXXX"
#define SW_HTTP_DATE_FORMAT "D, d M Y H:i:s T"
//#define SW_HTTP_100_CONTINUE
#define SW_WEBSOCKET_SERVER_SOFTWARE "swoole-websocket-server"
#define SW_WEBSOCKET_VERSION "13"
#endif /* SWOOLE_CONFIG_H_ */