swoole_server的相关属性

在swoole中,一个swoole_server的相关属性可以通过

$serv->set( $array configs );

函数来配置,这些配置选项使得swoole更加灵活。 示例:

$serv = new swoole_server("0.0.0.0", 9501);
$serv->set(array(
    ‘worker_num‘ => 8,
    ‘max_request‘ => 10000,
    ‘max_conn‘ => 100000,
    ‘dispatch_mode‘ => 2,
    ‘debug_mode‘=> 1,
    ‘daemonize‘ => false,
));

配置选项以及相关介绍如下:

[TOC] ####1.worker_num 描述:指定启动的worker进程数。
说明:swoole是master-> n * worker的模式,开启的worker进程数越多,server负载能力越大,但是相应的server占有的内存也会更多。同时,当worker进程数过多时,进程间切换带来的系统开销也会更大。因此建议开启的worker进程数为cpu核数的1-4倍。
示例:

‘worker_num‘ => 8

####2.max_request 描述:每个worker进程允许处理的最大任务数。
说明:设置该值后,每个worker进程在处理完max_request个请求后就会自动重启。设置该值的主要目的是为了防止worker进程处理大量请求后可能引起的内存溢出。
示例:

‘max_request‘ => 10000

####3.max_conn 描述:服务器允许维持的最大TCP连接数
说明:设置此参数后,当服务器已有的连接数达到该值时,新的连接会被拒绝。另外,该参数的值不能超过操作系统ulimit -n的值,同时此值也不宜设置过大,因为swoole_server会一次性申请一大块内存用于存放每一个connection的信息。
示例:

‘max_conn‘ => 10000

####4.ipc_mode 描述:设置进程间的通信方式。
说明:共有三种通信方式,参数如下:

  • 1 => 使用unix socket通信
  • 2 => 使用消息队列通信
  • 3 => 使用消息队列通信,并设置为争抢模式

示例:

‘ipc_mode‘ => 1

####5.dispatch_mode 描述:指定数据包分发策略。
说明:共有三种模式,参数如下:

  • 1 => 轮循模式,收到会轮循分配给每一个worker进程
  • 2 => 固定模式,根据连接的文件描述符分配worker。这样可以保证同一个连接发来的数据只会被同一个worker处理
  • 3 => 抢占模式,主进程会根据Worker的忙闲状态选择投递,只会投递给处于闲置状态的Worker

示例:

‘dispatch_mode‘ => 2

####6.task_worker_num 描述:服务器开启的task进程数。
说明:设置此参数后,服务器会开启异步task功能。此时可以使用task方法投递异步任务。

设置此参数后,必须要给swoole_server设置onTask/onFinish两个回调函数,否则启动服务器会报错。

示例:

‘task_worker_num‘ => 8

####7.task_max_request 描述:每个task进程允许处理的最大任务数。
说明:参考max_request task_worker_num
示例:

‘task_max_request‘ => 10000

####8.task_ipc_mode 描述:设置task进程与worker进程之间通信的方式。
说明:参考ipc_mode
示例:

‘task_ipc_mode‘ => 2

####9.daemonize 描述:设置程序进入后台作为守护进程运行。
说明:长时间运行的服务器端程序必须启用此项。如果不启用守护进程,当ssh终端退出后,程序将被终止运行。启用守护进程后,标准输入和输出会被重定向到 log_file,如果 log_file未设置,则所有输出会被丢弃。
示例:

‘daemonize‘ => 0

####10.log_file 描述:指定日志文件路径
说明:在swoole运行期发生的异常信息会记录到这个文件中。默认会打印到屏幕。注意log_file 不会自动切分文件,所以需要定期清理此文件。
示例:

‘log_file‘ => ‘/data/log/swoole.log‘

####11.heartbeat_check_interval 描述:设置心跳检测间隔
说明:此选项表示每隔多久轮循一次,单位为秒。每次检测时遍历所有连接,如果某个连接在间隔时间内没有数据发送,则强制关闭连接(会有onClose回调)。
示例:

‘heartbeat_check_interval‘ => 60

####12.heartbeat_idle_time 描述:设置某个连接允许的最大闲置时间。
说明:该参数配合heartbeat_check_interval使用。每次遍历所有连接时,如果某个连接在heartbeat_idle_time时间内没有数据发送,则强制关闭连接。默认设置为heartbeat_check_interval * 2。
示例:

‘heartbeat_idle_time‘ => 600

####13.open_eof_check 描述:打开eof检测功能
说明:与package_eof配合使用。此选项将检测客户端连接发来的数据,当数据包结尾是指定的package_eof字符串时才会将数据包投递至Worker进程,否则会一直拼接数据包直到缓存溢出或超时才会终止。一旦出错,该连接会被判定为恶意连接,数据包会被丢弃并强制关闭连接。

EOF检测不会从数据中间查找eof字符串,所以Worker进程可能会同时收到多个数据包,需要在应用层代码中自行explode("\r\n", $data) 来拆分数据包

示例:

‘open_eof_check‘ => true

####14.package_eof 描述:设置EOF字符串
说明:package_eof最大只允许传入8个字节的字符串
示例:

‘package_eof ‘ => ‘/r/n‘

####15.open_length_check 描述:打开包长检测
说明:包长检测提供了固定包头+包体这种格式协议的解析,。启用后,可以保证Worker进程onReceive每次都会收到一个完整的数据包。
示例:

‘open_length_check‘ => true

####16.package_length_offset 描述:包头中第几个字节开始存放了长度字段
说明:配合open_length_check使用,用于指明长度字段的位置。
示例:

‘package_length_offset‘ => 5

####17.package_body_offset 描述:从第几个字节开始计算长度。
说明:配合open_length_check使用,用于指明包头的长度。
示例:

‘package_body_offset‘ => 10

####18.package_length_type 描述:指定包长字段的类型
说明:配合open_length_check使用,指定长度字段的类型,参数如下:

  • ‘s‘ => int16_t 机器字节序
  • ‘S‘ => uint16_t 机器字节序
  • ‘n‘ => uint16_t 大端字节序
  • ’N‘ => uint32_t 大端字节序
  • ‘L‘ => uint32_t 机器字节序
  • ‘l‘ => int 机器字节序

示例:

‘package_length_type‘ => ‘N‘

####19.package_max_length 描述:设置最大数据包尺寸
说明:该值决定了数据包缓存区的大小。如果缓存的数据超过了该值,则会引发错误。具体错误处理由开启的协议解析的类型决定。
示例:

‘package_max_length‘ => 8192

####20.open_cpu_affinity 描述:启用CPU亲和性设置
说明:在多核的硬件平台中,启用此特性会将swoole的reactor线程/worker进程绑定到固定的一个核上。可以避免进程/线程的运行时在多个核之间互相切换,提高CPU Cache的命中率。
示例:

‘open_cpu_affinity‘ => true

####21.open_tcp_nodelay 描述:启用open_tcp_nodelay
说明:开启后TCP连接发送数据时会无关闭Nagle合并算法,立即发往客户端连接。在某些场景下,如http服务器,可以提升响应速度。
示例:

‘open_tcp_nodelay‘ => true

####22.tcp_defer_accept 描述:启用tcp_defer_accept特性
说明:启动后,只有一个TCP连接有数据发送时才会触发accept。
示例:

‘tcp_defer_accept‘ => true

####23.ssl_cert_file和ssl_key_file 描述:设置SSL隧道加密
说明:设置值为一个文件名字符串,指定cert证书和key的路径。
示例:

‘ssl_cert_file‘ => ‘/config/ssl.crt‘,
‘ssl_key_file‘ => ‘/config//ssl.key‘,

####24.open_tcp_keepalive 描述:打开TCP的KEEP_ALIVE选项
说明:使用TCP内置的keep_alive属性,用于保证连接不会因为长时闲置而被关闭。
示例:

‘open_tcp_keepalive‘ => true

####25.tcp_keepidle 描述:指定探测间隔。
说明:配合open_tcp_keepalive使用,如果某个连接在tcp_keepidle内没有任何数据来往,则进行探测。
示例:

‘tcp_keepidle‘ => 600

####26.tcp_keepinterval 描述:指定探测时的发包间隔
说明:配合open_tcp_keepalive使用
示例:

‘tcp_keepinterval‘ => 60

####27.tcp_keepcount 描述:指定探测的尝试次数
说明:配合open_tcp_keepalive使用,若tcp_keepcount次尝试后仍无响应,则判定连接已关闭。
示例:

‘tcp_keepcount‘ => 5

####28.backlog 描述:指定Listen队列长度
说明:此参数将决定最多同时有多少个等待accept的连接。
示例:

‘backlog‘ => 128

####29.reactor_num 描述:指定Reactor线程数
说明:设置主进程内事件处理线程的数量,默认会启用CPU核数相同的数量, 一般设置为CPU核数的1-4倍,最大不得超过CPU核数*4。
示例:

‘reactor_num‘ => 8

####30.task_tmpdir 描述:设置task的数据临时目录
说明:在swoole_server中,如果投递的数据超过8192字节,将启用临时文件来保存数据。这里的task_tmpdir就是用来设置临时文件保存的位置。

需要swoole-1.7.7+

示例:

‘task_tmpdir‘ => ‘/tmp/task/‘

####说明 除以上29个选项外,还有几个不常用或者已废弃的选项没有给出。以后如果有实际需求,会补充说明。

原文地址:https://www.cnblogs.com/tangaga/p/9110771.html

时间: 2024-10-13 20:10:03

swoole_server的相关属性的相关文章

cocos2dx 3.x以上(Sprite精灵类的相关属性与创建)

// //  MainScene.cpp //  helloworld // //  Created by apple on 16/9/19. // // #include "MainScene.hpp" Scene * MainScene::createScene() { auto scene = Scene::create(); //    CCScene * scene = CCScene::create();// 创建场景 //创建层 MainScene *layer = Ma

Cocos2d入门--1-- 初涉相关属性或代码

 Cocos2d入门--1-- 初涉相关属性或代码 Cocos2d vision:  cocos2d-x-3.8.1 万丈高楼,起于累土.对于一个游戏框架的学习,其实在于框架功能的使用积累,学会了如何在cocos2d游戏引擎的基础上使用它提供的各种功能,并灵活运用, 以及学会查阅Cocos2d官方提供的API文档.相信自己也能开发出自己喜爱或者让别人羡慕的游戏. 目录: 1>认识origin和visibleSize以及cocos2d的基础绘画类DrawNode的简单实用 2>认识 CCLOG(

前端笔记九,背景、边框和补丁相关属性

常用的背景相关属性:以下属性均在style内设置 background:设置对象的背景样式,不建议直接通过该属性来控制 background-attachment:设置背景图片是随对象内容滚动还是固定的,可选值: scroll:会随内容的滚动而滚动 fixed:背景图片固定 background-color:设置背景色,如果设置了背景图片则会覆盖背景色 background-image:设置背景图片,使用url()函数 background-position:设置对象的背景图片的位置,第一个表示

Android总结篇系列:Activity Intent Flags及Task相关属性

同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 -------------------------------------------------------------------------- 今天我们来讲一下Activity的task相关内容. 上次我们讲到Activity的四种启动模式的时候,已经了解到一些关于task的技术,今天我再向大

canvas相关属性使用

1.canvas按百分比画圆环 可以使用canvas的arc属性画出圆环,百分比部分换算成弧度即可. 2.canvas的font属性没法单独设置,必须设置两个及以上相关属性. 如果要通过传入的值来改变font属性的参数,可以通过正则匹配表达式,replace方法来实现, 如改变字号: context.font = "italic 12px/20px arial"; context.font = context.font.replace(/\d+(\.\d+)?(px|pt|em|%)/

css3背景、边框、和补丁相关属性

border :基本语法 border: border-width || border-style || border-color 默认值为: medium none . border-color 的默认值将采用文本颜色 相关属性: border-top,border-left,border-right,border-bottom:它们分别对边框的某个方向起作用,语法基本与border相同 border-bottom-color,border-top-color,border-bottom-co

extjs的相关属性

通用属性: labelSeparator:''//表示fieldLabel后不会显示冒号":" readOnly:true//只读 focusCls: 'txtHalfInput'//有焦点时的样式 maxLength:3, enforceMaxLength:true//输入位数check fieldStyle: 'margin-top:3px;'//display上下不对齐解决办法 Ext.button.Button 属性: enableToggle:true//设置按钮为开关状态

【html】学习记录-CSS的column相关属性

column相关属性: column-count:定义内容以多列形式显示 column-gap:定义每列之间的间距 示例: <section class="fourcolumn"> 人类或其他任何活着的个体,在生命之初不是放弃,不是自我唾弃,也不是对自己的存在进行诅咒.那些都是需要一个腐败和堕落的过程的,这一腐败的速度因人而异.有些人刚碰到压力便放弃了:有些人出卖和背叛了自己的意识:有些人不知不觉地慢慢熄火了,却从不知道自己何时已经失去了这种意识.然后,长者们蜂拥而上,百折

UILabel的相关属性设置

在iOS编程中UILabel是一个常用的控件,下面分享一下UILabel的相关属性设置的方法. 很多学习iOS6编程都是从storyboard开始,用到UILabel时是将控件拖到storyboard中生成实现,如果想要在-(void)viewDidLoad中用代码如[_label initWithFrame:CGRectMake(X,Y,WIDTH,HEIGHT)]方法改变拖拽到storyboard的label的大小是行不通的,因为程序加载时先执行了-(void)viewDidLoad的代码,