in provider/core/server/BaseServer.php [78:116]
public function __construct($name = 'ProviderServer')
{
$this->logger = \Logger::getLogger(__CLASS__);
$this->processName = $name;
// Initialization server startup parameters
$this->setting = array(
'worker_num' => 4, //PHP代码中是全异步非阻塞,worker_num配置为CPU核数的1-4倍即可。如果是同步阻塞,worker_num配置为100或者更高,具体要看每次请求处理的耗时和操作系统负载状况
'max_request' => 5000, //表示worker进程在处理完n次请求后结束运行,设置为0表示不自动重启。在Worker进程中需要保存连接信息的服务,需要设置为0.
'dispatch_mode' => 3, // 1平均分配,2按FD取摸固定分配,3抢占式分配,默认为取摸(dispatch=2)
'task_worker_num' => 0, // task process num
'task_max_request' =>5000,
'task_ipc_mode' =>3, //1 使用unix socket通信 , 2使用消息队列通信, 3使用消息队列通信,并设置为争抢模式,此时task/taskwait将无法指定目标进程ID
'max_conn' => 10000, // 设置Server最大允许维持多少个tcp连接,max_connection默认值为ulimit -n的值为1024,通过ulimit -n 65535更改最大默认值
'daemonize' => TRUE, // 是否开启守护进程
'work_mode' => 3, // 1 base模式,2线程模式,3进程模式
//协议包长度检测,以保证onReceive函数接收到的数据是个完整的包,并且包的最大长度为2M
'open_length_check' => TRUE,
'package_length_offset' => 12,
'package_body_offset' => 16,
'package_length_type' => 'N',
'package_max_length' =>1024*1024*2,
//启用心跳检测,此选项表示每隔多久轮循一次,单位为秒
'heartbeat_idle_time' => 600,
'heartbeat_check_interval' => 60,
//TCP-Keepalive死连接检测,如果对于死链接周期不敏感或者没有实现心跳机制,可以使用操作系统提供的keepalive机制来踢掉死链接
'open_tcp_keepalive' => 1, // 表示启用tcp keepalive
'tcp_keepidle' => 600, // 单位秒,连接在n秒内没有数据请求,将开始对此连接进行探测
'tcp_keepcount' => 3, // 探测的次数,超过次数后将close此连接。
'tcp_keepinterval' => 10, // 探测的间隔时间,单位秒。
);
$this->setHost();
$this->init();
}