Ver Fonte

一些注释

walkor há 12 anos atrás
pai
commit
06c7307d46

+ 8 - 1
conf/conf.d/EchoWorker.conf

@@ -1,6 +1,13 @@
+;用于压力测试的worker。可telnet测试
+;监听的端口
 listen = tcp://0.0.0.0:2014
+;是否是长连接,这里设置成短连接,没请求一次服务端就自动断开
 persistent_connection = 0
+;启动多少worker进程,压测时启动进程数与cpu核数一致即可
 start_workers=1
-max_requests=10000
+;接收多少请求后退出
+max_requests=1000000
+;以哪个用户运行该worker进程
 user=www-data
+;socket有数据可读的时候预读长度,一般设置为应用层协议包头的长度
 preread_length=1024

+ 4 - 0
conf/conf.d/FileMonitor.conf

@@ -1,2 +1,6 @@
+;此worker进程不监听端口,主要用来监控文件更新,需要root权限
+;listen=
+;启动多少worker进程
 start_workers=1
+;以哪个用户运行该worker进程
 user=root

+ 18 - 2
conf/conf.d/Monitor.conf

@@ -1,8 +1,24 @@
+;==该worker的说明==
+;①监听2000端口,并提供telnet远程控制功能
+;②监控worker进程退出次数及状态,有异常时告警(告警发送邮件或者短信需要自己实现)
+;③监控master进程是否异常退出
+;④监控每个worker进程内存是否大于设定值,大于设定值则安全重启对应进程
+
+;监听ip及端口
 listen = tcp://0.0.0.0:2000
+;telnet需要长连接
 persistent_connection = 1
+;启动多少进程,1个就够
 start_workers=1
-max_requests=10000
+;以哪个用户运行这个worker进程,需要root权限
 user=root
+;预读长度
 preread_length=64
+
+;==以下是自定义的配置==
+;如果worker进程1分钟内退出max_worker_exit_count次则触发告警
 max_worker_exit_count=2000
-max_mem_limit=83886
+;每个worker进程最大内存阈值,超过这个值安全重启这个进程
+max_mem_limit=124000
+;telnet密码
+password=yourpassword

+ 2 - 2
conf/workerman.conf

@@ -1,4 +1,4 @@
-;dev or production dev环境中var_dump、echo、php notcie等不会在终端上打印出来
+;debug=1则var_dump、echo、php notcie等会在终端上打印出来
 debug=1
 ;保存主进程pid的文件
 pid_file=/var/run/php-server.pid
@@ -8,4 +8,4 @@ log_dir=./logs/
 ipc_key=0x70010a2e
 ;开启共享内存大小
 shm_size=393216
-indlue = conf.d/*.conf
+indlue=conf.d/*.conf

+ 9 - 1
workers/EchoWorker.php

@@ -1,17 +1,25 @@
 <?php
 /**
  * 
- * 压测worker
+ *  worker,可以telnet测试
  * @author walkor <worker-man@qq.com>
  */
 require_once WORKERMAN_ROOT_DIR . 'man/Core/SocketWorker.php';
 class EchoWorker extends Man\Core\SocketWorker
 {
+    /**
+     * 确定数据是否接收完整,这里每次收到包都认为数据完整
+     * @see Man\Core.SocketWorker::dealInput()
+     */
     public function dealInput($recv_str)
     {
         return 0; 
     }
 
+    /**
+     * 数据接收完整后处理业务逻辑,只是发送接收到的数据给客户端
+     * @see Man\Core.SocketWorker::dealProcess()
+     */
     public function dealProcess($recv_str)
     {
         $this->sendToClient($recv_str);

+ 2 - 0
workers/FileMonitor.php

@@ -3,6 +3,8 @@ require_once WORKERMAN_ROOT_DIR . 'man/Core/SocketWorker.php';
 /**
  * 
  * 用这个worker监控文件更新
+ * 当文件更新后会给每个worker进程发送平滑重启信号
+ * 做到文件更新自动加载到内存
  * 
 * @author walkor <worker-man@qq.com>
  */

+ 2 - 2
workers/Monitor.php

@@ -2,7 +2,7 @@
 require_once WORKERMAN_ROOT_DIR . 'man/Core/SocketWorker.php';
 /**
  * 
- * 1、提供telnet接口,查看服务状态
+ * 1、提供telnet接口,远程控制服务器查看服务状态
  * 2、监控主进程是否挂掉
  * 3、监控worker进程是否频繁退出
  * 4、定时清理log文件
@@ -183,7 +183,7 @@ class Monitor extends Man\Core\SocketWorker
         $this->adminAuth[$this->currentDealFd] = !isset($this->adminAuth[$this->currentDealFd]) ? 0 : $this->adminAuth[$this->currentDealFd];
         if($this->adminAuth[$this->currentDealFd] < 3)
         {
-            if($buffer != 'P@ssword')
+            if($buffer != \Man\Core\Lib\Config::get($this->workerName.'.password'))
             {
                 if(++$this->adminAuth[$this->currentDealFd] >= 3)
                 {