Giter Site home page Giter Site logo

tarsphp's Introduction

TARS-PHP

Tars PHP is a solution for PHP to use the tars binary protocol, as well as the overall operation and maintenance of the tars platform, RPC and a series of capabilities. It mainly consists of the following parts:

If you want to experience tar server quickly, please enter the examples directory, which contains detailed deployment guidelines and development guidelines for three services

Refer to here for more detailed documents https://tarsphp.gitbook.io/doc

tars-client

The PHP ability to call the tar service is provided in the tar client, including:

  • Call the instance of the remote service;

  • Main dispatching Report

  • Automatic addressing module

Detailed description

tars-server

Tars-server provides the underlying server framework and supports the following features

  • High performance service based on swoole1. X / 2. X / 4. X

  • Support two protocol modes: tup protocol and tar stream

  • Support three kinds of servers: http, TCP and timer

  • Reporting, monitoring and log integration

  • Tars platform release support Details Description

tars-config

The ability module to pull configuration files from the configuration service of the tar platform.

Details Description

tars-deploy

The module that packs the business code of tar server.

Detailed description

tars-extension

The PHP extension code that tar relies on Detailed description

tars-log

Tars Modules of remote log Detailed description

tars-monitor

tarsFunction modules for main dispatching report and feature report Detailed description

tars-registry

The function module of tars for master addressing Detailed description

tars-report

tars Module of keeping alive Report Detailed description

tars-utils

tars Module for profile resolution Detailed description

examples

Three actual server instances and descriptions of TCP, HTTP and timer:

tars2php

The tool of automatic code generation can automatically generate server and client code. Detailed description

tars Platform modification instructions for PHP

Compared with the default template tar.default, PHP adds tar.tarsphp.default, mainly including the following parts:

    <tars>
        ...
        <application>
            <server>
                ...
                php=/data/env/runtime/php-7.1.7/bin/php
                buffer_output_size=12582912
                open_tcp_nodelay=1
                open_eof_check=0
                open_eof_split=0
                task_worker_num=1
                dispatch_mode=2
                daemonize=1
                ...
            </server>
        </application>
        ...
    </tars>
  • Support custom PHP execution file (/ tar / application / server < PHP >), default / usr / bin / PHP.

  • Support the configuration of the startup file of the custom tar s_php framework (/ tar s / application / server < entry >), and the Src / index.php under the default project directory.

  • The startup script generated by the tar platform will execute the startup and shutdown script with entrance as the entry file.

In the tar server module, three different HTTP, timer and TCP servers need to use different modules. Please be sure to add and modify new templates!!

tarsphp's People

Contributors

bobzhangyong avatar copyrenzhe avatar dpp2009 avatar meijing0114 avatar ruanshudong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tarsphp's Issues

使用docker安装的TARS平台创建的tarsphp始终无法启动

tars2php转换.tars文件时,如果先定义了参数vector<struct xxx>的方法,再定义参数struct xxx的方法,就会跳过生成use struct语句,导致接口文件有误

以下.tars文件转换成接口文件时会报错,没有正确的use struct class User 。

原因是.tars文件先引用了vector,tars2php将User Struct加入servantParser->useStruct中,但没有写use语句。之后再引用User时,由于useStruct已存在Struct User,所以不会写入use语句。

而对调这两个方法的位置,就不会出现问题。建议:不管是在注解里还是在方法里写复杂结构类型,都use一下对应的类

tars2php("phptars/tars2php")的版本是0.1.3

module User
{

    struct User
    {
        0 optional string uuid; //uuid
        1 optional string account; //帐户名
    };

     //主要接口
      interface User
      {

         //取得用户列表
          void getUserBasicListByQuery(vector<string> uuid, out vector<User> list, out string error);

           //取得一个用户
           void getUserBasicByUuid(string uuid, out User user, out string error);

      };

};

服务启动和协议解析部分可否留下可扩展的入口

1.协议解析部分,比如thrift协议,他的解析和调用都是高度封装的,都没有办法只获取method、args这些东西而不调用,他直接在内部调用了,如果要支持thrift协议可能不好接入
2.启动部分设置onTask、onFinish等回调没有办法定制自己的逻辑了
我指的是Tars\core\Service部分逻辑

希望services定义支持多个obj

目前支持定义格式

return array(
    'home-api' => '\Server\protocol\QD\ActCommentServer\CommentObj\ActCommentServiceServant',
    'home-class' => '\Server\impl\ActCommentServerImpl',
);

期望兼容以下定义格式

return array(
	'Aobj' => [
		'home-api' => '\Server\protocol\QD\ActCommentServer\CommentObj\ActCommentServiceServant',
		'home-class' => '\Server\impl\ActCommentServerImpl',
	],
	'Bobj' => [
		'home-api' => '\Server\protocol\QD\ActCommentServer\CommentObj\BActCommentServiceServant',
		'home-class' => '\Server\impl\BActCommentServerImpl',
	],
);

Tars框架,tars2php工具在TCP端针对多个不同的OBJ批量生成代码

Tars框架,tars2php工具在TCP端针对多个不同的OBJ批量生成代码,因为可能一个TCP服务中,有多个小模块,这样要分开多个OBJ,现在支持多个OBJ访问,但是tars2php生成工具暂时不支持多个obj生成代码,希望能改进一下,因为如果是多个TCP服务的话,不想每添加一个tcp都改一下vendor的tars2php工具代码,谢谢!

Class 'TARS_Struct' not found

Hi, i have installed the swoole and when deploying php app, i get the error

Class 'TARS_Struct' not found in /usr/local/app/tars/tarsnode/data/app.php/bin/src/vendor/phptars/tars-report/src/ServerInfo.php on line 5

tars主服务全部正常,phpdemo服务启动5-6s后自动掉线,求助。。

tars主服务全部正常,phpdemo服务启动5-6s后自动掉线;
1、开始怀疑是模板设置问题,检查后http模板和tcp模板都是由tars.tarsphp.default模板复制过来修改的,http服务和tcp服务都会掉线,修改父模板名为tars.default问题没有解决;
2、检查服务的启动日志,如QD.ActCommentServer.log,未发现明显异常,如下:
QD.ActCommentServer start [SUCCESS]
[2019-03-08 08:17:40] tars_logger.INFO: stat/property/keepalive/config/logger service init start... [] []
[2019-03-08 08:17:40] tars_logger.INFO: stat/property/keepalive/config/logger service init finish... [] []
[2019-03-08 08:17:40] tars_logger.INFO: Server type tcp... [] []
QD.ActCommentServer stop [SUCCESS]
PHP Notice: Undefined index: protocolName in /usr/local/app/tars/tarsnode/data/QD.ActCommentServer/bin/src/vendor/phptars/tars-server/src/core/Server.php on line 68
QD.ActCommentServer start [SUCCESS]
[2019-03-08 08:27:41] tars_logger.INFO: stat/property/keepalive/config/logger service init start... [] []
[2019-03-08 08:27:41] tars_logger.INFO: stat/property/keepalive/config/logger service init finish... [] []
[2019-03-08 08:27:41] tars_logger.INFO: Server type tcp... [] []
QD.ActCommentServer stop [SUCCESS]
3、环境安装了redis及其php扩展、swoole扩展、tars扩展。

composer打包打不了如何解决?

composer打包打不了如何解决?
composer.json文件没改过,试过换name还是不行

{
"name" : "tars-http-server-demo",
"description": "tars http server",
"require": {
"phptars/tars-server": "~0.3",
"phptars/tars-deploy": "~0.1",
"phptars/tars2php": "~0.1",
"phptars/tars-log": "~0.1",
"ext-zip" : ">=0.0.1"
},
"autoload": {
"psr-4": {
"HttpServer\" : "./"
}
},
"minimum-stability": "stable",
"scripts" : {
"deploy" : "\Tars\deploy\Deploy::run"
}
}

错误如下:
Deprecation warning: Your package name tars-http-server-demo is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "a-z0-9/a-z0-9". Make sure you fix this as Composer 2.0 will error. Class \Tars\deploy\Deploy is not autoloadable, can not call deploy script

tars监控swoole进程导致服务器内部502

测试重现步骤:
max_request设置为5 (实际生产环境配置为1000000)
worker接收到http最大请求次数超过5,首先swoole机制原因worker进程会自动重启,
推断:tars监听到的woker进程有变化,并将其kill掉再启动一次?

附swoole官方文档解释 https://wiki.swoole.com/wiki/page/p-max_request.html

附swoole.log中的记录:
[2019-04-18 09:33:32 #2357.4] NOTICE Server is shutdown now.
[2019-04-18 09:33:32 $2358.0] ERROR swProcessPool_shutdown(:339): waitpid(2369) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swProcessPool_shutdown(:339): waitpid(2370) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swProcessPool_shutdown(:339): waitpid(2371) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swProcessPool_shutdown(:339): waitpid(2372) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swProcessPool_shutdown(:339): waitpid(2373) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swProcessPool_shutdown(:339): waitpid(2374) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swProcessPool_shutdown(:339): waitpid(2375) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swProcessPool_shutdown(:339): waitpid(2376) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swProcessPool_shutdown(:339): waitpid(2377) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swProcessPool_shutdown(:339): waitpid(2378) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swManager_loop(:474): waitpid(2379) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swManager_loop(:474): waitpid(2380) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swManager_loop(:474): waitpid(2381) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swManager_loop(:474): waitpid(2382) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swManager_kill_user_worker(:609): waitpid(2383) failed. Error: No child processes[10].
[2019-04-18 09:33:32 $2358.0] ERROR swManager_kill_user_worker(:609): waitpid(2384) failed. Error: No child processes[10].
[2019-04-18 09:33:32 #2357.4] ERROR swFactoryProcess_shutdown(:62): waitpid(2358) failed. Error: No child processes[10].
Server has been started. (master PID: 2415, manager PID: 2416)

发布节点报错

服务器采用docker方式安装的,创建服务之后,发布节点报错

[TC_File::copyFile] error: /usr/local/app/tars/tarsnode/tmp/download/BatchPatching/ichong.user/user :No such file or directory

官方示例 发布服务到节点,提示找不到服务

配置:

image

image

错误响应:

image

本地环境:

Tars 版本:

web:3.0.0
framework:3.0.6

Windows 10 企业版 LTSC @21H2
WSL:Debian GNU/Linux 9 (stretch) @Linux version 5.10.16.3-microsoft-standard-WSL2
Docker:

Client: Docker Engine - Community
 Cloud integration: v1.0.24
 Version:           20.10.14
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 24 01:48:21 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Desktop
 Engine:
  Version:          20.10.14
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       87a90dc
  Built:            Thu Mar 24 01:46:14 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.11
  GitCommit:        3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc:
  Version:          1.0.3
  GitCommit:        v1.0.3-0-gf46b6ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Docker 虚拟网络:
docker network create -d bridge --subnet=172.25.0.0/24 --gateway=172.25.0.1 tars

image

容器 容器ip
tars-mysql 172.25.0.2
tars-framework 172.25.0.3
tars-node 172.25.0.5

爬了个php作为客户端调用java服务端的坑

如题,就是php作为客户端通过主控寻址服务获取java服务端对应服务服务地址的时候, php客户端对返回的数据包解析失败, 对比了下最终发现是php的EndpointF.php里面多了几个字段属性, 注释掉就好了, 希望对后面碰到同样问题的同学能有所帮助, 嘿嘿嘿~~~

java的EndpointF结构:
https://github.com/TarsCloud/TarsJava/blob/master/core/src/main/resources/EndpointF.tars
php的EndpointF结构:
https://github.com/TarsPHP/tars-registry/blob/master/src/EndpointF.php

或者直接复制这个注释掉之后的吧,但测试的时候发现注释掉self::SAMPLETIME这一个就好了, 不造为啥

<?php

namespace Tars\registry;

class EndpointF extends \TARS_Struct
{
    const HOST = 0;
    const PORT = 1;
    const TIMEOUT = 2;
    const ISTCP = 3;
    const GRID = 4;
    const GROUPWORKID = 5;
    const GROUPREALID = 6;
    const SETID = 7;
    const QOS = 8;
    const BAKFLAG = 9;
    const GRIDFLAG = 10;
    const WEIGHT = 11;
    const WEIGHTTYPE = 12;
    const CPULOAD = 13;
    const SAMPLETIME = 14;
    const CONTAINERNAME = 15;
    const GRAYFLAG = 16;

    public $host;
    public $port;
    public $timeout;
    public $istcp;
    public $grid;
    public $groupworkid;
    public $grouprealid;
    public $setId;
    public $qos;
    public $bakFlag;
    public $gridFlag;
    public $weight;
    public $weightType;
    public $cpuload;
    public $sampletime;
    public $containerName;
    public $grayFlag;

    protected static $fields = array(
        self::HOST => array(
            'name' => 'host',
            'required' => true,
            'type' => \TARS::STRING,
            ),
        self::PORT => array(
            'name' => 'port',
            'required' => true,
            'type' => \TARS::INT32,
            ),
        self::TIMEOUT => array(
            'name' => 'timeout',
            'required' => true,
            'type' => \TARS::INT32,
            ),
        self::ISTCP => array(
            'name' => 'istcp',
            'required' => true,
            'type' => \TARS::INT32,
            ),
        self::GRID => array(
            'name' => 'grid',
            'required' => true,
            'type' => \TARS::INT32,
            ),
        self::GROUPWORKID => array(
            'name' => 'groupworkid',
            'required' => false,
            'type' => \TARS::INT32,
            ),
        self::GROUPREALID => array(
            'name' => 'grouprealid',
            'required' => false,
            'type' => \TARS::INT32,
            ),
        self::SETID => array(
            'name' => 'setId',
            'required' => false,
            'type' => \TARS::STRING,
            ),
        self::QOS => array(
            'name' => 'qos',
            'required' => false,
            'type' => \TARS::INT32,
            ),
        self::BAKFLAG => array(
            'name' => 'bakFlag',
            'required' => false,
            'type' => \TARS::INT32,
            ),
        self::GRIDFLAG => array(
            'name' => 'gridFlag',
            'required' => false,
            'type' => \TARS::INT32,
            ),
        self::WEIGHT => array(
            'name' => 'weight',
            'required' => false,
            'type' => \TARS::INT32,
            ),
        self::WEIGHTTYPE => array(
            'name' => 'weightType',
            'required' => false,
            'type' => \TARS::INT32,
            ),
        /*self::CPULOAD => array(
            'name' => 'cpuload',
            'required' => false,
            'type' => \TARS::INT32,
            ),
        self::SAMPLETIME => array(
            'name' => 'sampletime',
            'required' => false,
            'type' => \TARS::INT64,
            ),
        self::CONTAINERNAME => array(
            'name' => 'containerName',
            'required' => false,
            'type' => \TARS::STRING,
            ),
        self::GRAYFLAG => array(
            'name' => 'grayFlag',
            'required' => false,
            'type' => \TARS::INT32,
            ),*/
    );

    public function __construct()
    {
        parent::__construct('tars_tarsregistry_QueryObj_EndpointF', self::$fields);
    }
}

tars-http-server demo测试部分http情况跑不通,下面是日志。

下面的这个请求失败。actionIndex,actionTestHeader,actionTestStatus,actionPost1 可以正常运行。

// curl "172.17.0.3:28887/Index/testSelf?a=b" -i
public function actionTestSelf()
{
$config = new CommunicatorConfig();
$config->setLocator(ENVConf::getLocator());
$config->setModuleName('PHPTest.PHPHttpServer');
$config->setSocketMode(3);

    $servant = new TestTafServiceServant($config);
    $result = $servant->testSelf();

    $this->sendRaw('result:'.$result);
}

PHP Fatal error: Uncaught Exception: Rout fail in /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-client/src/Communicator.php:87
Stack trace:
#0 /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/servant/PHPTest/PHPServer/obj/TestTafServiceServant.php(370): Tars\client\Communicator->invoke(Object(Tars\client\RequestPacket), 3)
#1 /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/controller/IndexController.php(110): HttpServer\servant\PHPTest\PHPServer\obj\TestTafServiceServant->testProperty()
#2 /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/core/Event.php(111): HttpServer\controller\IndexController->actionTestProperty()
#3 /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/core/Server.php(489): Tars\core\Event->onRequest(Object(Tars\core\Request), Object(Tars\core\Response))
#4 {main}
thrown in /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-client/src/Communicator.php on line 87
[2019-03-05 17:01:44 *9727.1] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Exception: Rout fail in /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-client/src/Communicator.php:87
Stack trace:
#0 /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/servant/PHPTest/PHPServer/obj/TestTafServiceServant.php(370): Tars\client\Communicator->invoke(Object(Tars\client\RequestPacket), 3)
#1 /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/controller/IndexController.php(110):

两台虚拟机搭建的tars运行PHPTest调用服务时报错 Rout fail

PHPTest中调用index/index是没问题的,调用index/testbasic就出错了,log中错误信息如下:
PHP Fatal error: Uncaught Exception: Rout fail in /data/tarsnode_data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-client/src/Communicator.php:87
Stack trace:
#0 /data/tarsnode_data/PHPTest.PHPHttpServer/bin/src/servant/PHPTest/PHPServer/obj/TestTafServiceServant.php(111): Tars\client\Communicator->invoke(Object(Tars\client\RequestPacket), 3)
#1 /data/tarsnode_data/PHPTest.PHPHttpServer/bin/src/controller/IndexController.php(142): HttpServer\servant\PHPTest\PHPServer\obj\TestTafServiceServant->testBasic(true, 1, '333', NULL, Object(Exception), NULL)
#2 /data/tarsnode_data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/core/Event.php(112): HttpServer\controller\IndexController->actionTestBasic()
#3 /data/tarsnode_data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/core/Server.php(543): Tars\core\Event->onRequest(Object(Tars\core\Request),

Object(Tars\core\Response))
#4 {main}
thrown in /data/tarsnode_data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-client/src/Communicator.php on line 87
[2019-08-05 09:43:14 *203.2] ERROR zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Exception: Rout fail in /data/tarsnode_data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-client/src/Communicator.php:87

PHPHttpServer demo 安装后,请求报错 curl http://10.40.0.100:10003/Index/index

PHP Fatal error:  Uncaught Exception: -99 in /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/protocol/TARSProtocol.php:29
Stack trace:
#0 /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/core/Event.php(90): Tars\protocol\TARSProtocol->route(Object(Tars\core\Request), Object(Tars\core\Response))
#1 /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/core/Server.php(379): Tars\core\Event->onRequest(Object(Tars\core\Request), Object(Tars\core\Response))
#2 {main}
  thrown in /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/protocol/TARSProtocol.php on line 29
[2018-10-15 03:42:56 *9732.0]	ERROR	zm_deactivate_swoole (ERROR 503): Fatal error: Uncaught Exception: -99 in /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/protocol/TARSProtocol.php:29
Stack trace:
#0 /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/core/Event.php(90): Tars\protocol\TARSProtocol->route(Object(Tars\core\Request), Object(Tars\core\Response))
#1 /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server

Uncaught Error: Class 'Tars\Conf' not found

PHP Fatal error: Uncaught Error: Class 'Tars\Conf' not found in /usr/local/app/tars/tarsnode/data/PHPTest.PHPHttpServer/bin/src/vendor/phptars/tars-server/src/cmd/Start.php:57

搜索了一下,没有找到这个类, 请问在哪里

worker进程被kill或进程内主动stop后,manager进程无法重新拉起worker进程

服务是通过web部署启动的,worker进程意外退出后,manager应该重新拉起一个新进程的,但是并没有拉起。

如果通过 tars_start.sh脚本启动,worker退出后,manager是可以重新拉起。

我追踪了framework,C++中是通过execl(SHELL, "sh", "-c", cmdstring, (char *)0);启动的,命令应该是 /bin/sh -c /root/tars-php/tars_start.sh 2>&1 >> Guang.Sin.127.0.0.1 &,尝试使用此命令启动,也是正常。

请问是什么原因呢?有主动退出并重新启动worker进程的需求,现在卡住了。

如果event worker进程出现了代码致命错误,导致全部退出,task却一直上报健康状态的,那么在web上是不是无法感知到?

# ps aux | grep Guang
root      7389  0.0  0.1 637908  7696 ?        Ssl  16:33   0:00 Guang.Sin: master process                                                                             
root      7390  0.0  0.1 489676  6180 ?        S    16:33   0:00 Guang.Sin: manager process                                                                            
root      7399  0.0  0.1 428216  7228 ?        S    16:33   0:00 Guang.Sin: task worker process                                                                        
root      7400  0.0  0.1 428600  6632 ?        S    16:33   0:00 Guang.Sin: event worker process                                                                       
root      7401  0.0  0.2 432952  9108 ?        S    16:33   0:00 Guang.Sin: event worker process                                                                       
root      7402  0.0  0.2 432952  9108 ?        S    16:33   0:00 Guang.Sin: event worker process                                                                       
root      7403  0.0  0.2 432952  9108 ?        S    16:33   0:00 Guang.Sin: event worker process                                                                       
root      7404  0.0  0.2 432952  9108 ?        S    16:33   0:00 Guang.Sin: event worker process                                                                       
root      7424  0.0  0.0 112704   972 pts/2    S+   16:33   0:00 grep --color=auto Guang                                                                               
# kill -9 7404
# ps aux | grep Guang
root      7389  0.0  0.1 637908  7696 ?        Ssl  16:33   0:00 Guang.Sin: master process                                                                             
root      7390  0.0  0.1 489676  6180 ?        S    16:33   0:00 Guang.Sin: manager process                                                                            
root      7399  0.0  0.1 428216  7228 ?        S    16:33   0:00 Guang.Sin: task worker process                                                                        
root      7400  0.0  0.1 428600  6632 ?        S    16:33   0:00 Guang.Sin: event worker process                                                                       
root      7401  0.0  0.2 432952  9108 ?        S    16:33   0:00 Guang.Sin: event worker process                                                                       
root      7402  0.0  0.2 432952  9108 ?        S    16:33   0:00 Guang.Sin: event worker process                                                                       
root      7403  0.0  0.2 432952  9108 ?        S    16:33   0:00 Guang.Sin: event worker process                                                                       
root      7448  0.0  0.0 112704   976 pts/2    S+   16:34   0:00 grep --color=auto Guang

mac build extension fail

mac

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.1.0 (clang-902.0.39.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
duplicate symbol _tars_struct_ce in:
    .libs/tupapi.o
    .libs/ttars.o
duplicate symbol _tars_ce in:
    .libs/tupapi.o
    .libs/ttars.o
duplicate symbol _tars_vector_ce in:
    .libs/tupapi.o
    .libs/ttars.o
duplicate symbol _tup_ce in:
    .libs/tupapi.o
    .libs/ttars.o
duplicate symbol _tars_map_ce in:
    .libs/tupapi.o
    .libs/ttars.o
duplicate symbol _tup_exception_ce in:
    .libs/tupapi.o
    .libs/ttars.o
duplicate symbol _tars_struct_ce in:
    .libs/tupapi.o
    .libs/tup_c.o
duplicate symbol _tars_ce in:
    .libs/tupapi.o
    .libs/tup_c.o
duplicate symbol _tars_vector_ce in:
    .libs/tupapi.o
    .libs/tup_c.o
duplicate symbol _tup_ce in:
    .libs/tupapi.o
    .libs/tup_c.o
duplicate symbol _tars_map_ce in:
    .libs/tupapi.o
    .libs/tup_c.o
duplicate symbol _tup_exception_ce in:
    .libs/tupapi.o
    .libs/tup_c.o
ld: 12 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [phptars.la] Error 1

Tars\log\LogServant->logger()日志函数调用log服务时解包失败

抛出异常trace如图
QQ图片20190627151836

\Tars\client\Communicator::invoke(RequestPacket $requestPacket, $timeout, $sIp = '', $iPort = 0)的入参如下(通过base64encode(serialize(get_defined_vars()))打印):
#23 {main}string(7320) "YTo0OntzOjEzOiJyZXF1ZXN0UGFja2V0IjtPOjI1OiJUYXJzXGNsaWVudFxSZXF1ZXN0UGFja2V0IjoxNDp7czoxMToiX2VuY29kZUJ1ZnMiO2E6NTp7czozOiJhcHAiO3M6NDoiFgJCQiI7czo2OiJzZXJ2ZXIiO3M6MTM6IiYLVXNlclNlcnZpY2UiO3M6NDoiZmlsZSI7czo3OiI2BWxvY2FsIjtzOjY6ImZvcm1hdCI7czo4OiJGBiVZJW0lZCI7czo2OiJidWZmZXIiO3M6NDg5NjoiWQABBwAAExhbMjAxOS0wNi0yNyAwNzoyMTo1M10gbG9jYWwuRVJST1I6IFN5bWZvbnlcQ29tcG9uZW50XERlYnVnXEV4Y2VwdGlvblxGYXRhbFRocm93YWJsZUVycm9yOiBUb28gZmV3IGFyZ3VtZW50cyB0byBmdW5jdGlvbiBBcHBcSHR0cFxDb250cm9sbGVyc1xSZWdpc3RlckNvbnRyb2xsZXI6OlNNU0NvZGUoKSwgMCBwYXNzZWQgYW5kIGV4YWN0bHkgMyBleHBlY3RlZCBpbiAvdXNyL2xvY2FsL2FwcC90YXJzL3RhcnNub2RlL2RhdGEvQkIuVXNlclNlcnZpY2UvYmluL3NyYy9hcHAvSHR0cC9Db250cm9sbGVycy9SZWdpc3RlckNvbnRyb2xsZXIucGhwOjMwIFN0YWNrIHRyYWNlOiAjMCBbaW50ZXJuYWwgZnVuY3Rpb25dOiBBcHBcSHR0cFxDb250cm9sbGVyc1xSZWdpc3RlckNvbnRyb2xsZXItPlNNU0NvZGUoKSAjMSAvdXNyL2xvY2FsL2FwcC90YXJzL3RhcnNub2RlL2RhdGEvQkIuVXNlclNlcnZpY2UvYmluL3NyYy92ZW5kb3IvaWxsdW1pbmF0ZS9jb250YWluZXIvQm91bmRNZXRob2QucGhwKDMyKTogY2FsbF91c2VyX2Z1bmNfYXJyYXkoQXJyYXksIEFycmF5KSAjMiAvdXNyL2xvY2FsL2FwcC90YXJzL3RhcnNub2RlL2RhdGEvQkIuVXNlclNlcnZpY2UvYmluL3NyYy92ZW5kb3IvaWxsdW1pbmF0ZS9jb250YWluZXIvQm91bmRNZXRob2QucGhwKDkwKTogSWxsdW1pbmF0ZVxDb250YWluZXJcQm91bmRNZXRob2Q6OklsbHVtaW5hdGVcQ29udGFpbmVyXHtjbG9zdXJlfSgpICMzIC91c3IvbG9jYWwvYXBwL3RhcnMvdGFyc25vZGUvZGF0YS9CQi5Vc2VyU2VydmljZS9iaW4vc3JjL3ZlbmRvci9pbGx1bWluYXRlL2NvbnRhaW5lci9Cb3VuZE1ldGhvZC5waHAoMzQpOiBJbGx1bWluYXRlXENvbnRhaW5lclxCb3VuZE1ldGhvZDo6Y2FsbEJvdW5kTWV0aG9kKE9iamVjdChMYXJhdmVsXEx1bWVuXEFwcGxpY2F0aW9uKSwgQXJyYXksIE9iamVjdChDbG9zdXJlKSkgIzQgL3Vzci9sb2NhbC9hcHAvdGFycy90YXJzbm9kZS9kYXRhL0JCLlVzZXJTZXJ2aWNlL2Jpbi9zcmMvdmVuZG9yL2lsbHVtaW5hdGUvY29udGFpbmVyL0JvdW5kTWV0aG9kLnBocCg2Myk6IElsbHVtaW5hdGVcQ29udGFpbmVyXEJvdW5kTWV0aG9kOjpjYWxsKE9iamVjdChMYXJhdmVsXEx1bWVuXEFwcGxpY2F0aW9uKSwgQXJyYXksIEFycmF5KSAjNSAvdXNyL2xvY2FsL2FwcC90YXJzL3RhcnNub2RlL2RhdGEvQkIuVXNlclNlcnZpY2UvYmluL3NyYy92ZW5kb3IvaWxsdW1pbmF0ZS9jb250YWluZXIvQm91bmRNZXRob2QucGhwKDI3KTogSWxsdW1pbmF0ZVxDb250YWluZXJcQm91bmRNZXRob2Q6OmNhbGxDbGFzcyhPYmplY3QoTGFyYXZlbFxMdW1lblxBcHBsaWNhdGlvbiksICdBcHBcXEh0dHBcXENvbnRyby4uLicsIEFycmF5LCAnU01TQ29kZScpICM2IC91c3IvbG9jYWwvYXBwL3RhcnMvdGFyc25vZGUvZGF0YS9CQi5Vc2VyU2VydmljZS9iaW4vc3JjL3ZlbmRvci9pbGx1bWluYXRlL2NvbnRhaW5lci9Db250YWluZXIucGhwKDU3Nik6IElsbHVtaW5hdGVcQ29udGFpbmVyXEJvdW5kTWV0aG9kOjpjYWxsKE9iamVjdChMYXJhdmVsXEx1bWVuXEFwcGxpY2F0aW9uKSwgJ0FwcFxcSHR0cFxcQ29udHJvLi4uJywgQXJyYXksICdTTVNDb2RlJykgIzcgL3Vzci9sb2NhbC9hcHAvdGFycy90YXJzbm9kZS9kYXRhL0JCLlVzZXJTZXJ2aWNlL2Jpbi9zcmMvcm91dGVzL3dlYi5waHAoNDApOiBJbGx1bWluYXRlXENvbnRhaW5lclxDb250YWluZXItPmNhbGwoJ0FwcFxcSHR0cFxcQ29udHJvLi4uJywgQXJyYXksICdTTVNDb2RlJykgIzggW2ludGVybmFsIGZ1bmN0aW9uXTogQ2xvc3VyZS0+e2Nsb3N1cmV9KCdTTVNDb2RlJywgT2JqZWN0KElsbHVtaW5hdGVcSHR0cFxSZXF1ZXN0KSkgIzkgL3Vzci9sb2NhbC9hcHAvdGFycy90YXJzbm9kZS9kYXRhL0JCLlVzZXJTZXJ2aWNlL2Jpbi9zcmMvdmVuZG9yL2lsbHVtaW5hdGUvY29udGFpbmVyL0JvdW5kTWV0aG9kLnBocCgzMik6IGNhbGxfdXNlcl9mdW5jX2FycmF5KE9iamVjdChDbG9zdXJlKSwgQXJyYXkpICMxMCAvdXNyL2xvY2FsL2FwcC90YXJzL3RhcnNub2RlL2RhdGEvQkIuVXNlclNlcnZpY2UvYmluL3NyYy92ZW5kb3IvaWxsdW1pbmF0ZS9jb250YWluZXIvQm91bmRNZXRob2QucGhwKDc4KTogSWxsdW1pbmF0ZVxDb250YWluZXJcQm91bmRNZXRob2Q6OklsbHVtaW5hdGVcQ29udGFpbmVyXHtjbG9zdXJlfSgpICMxMSAvdXNyL2xvY2FsL2FwcC90YXJzL3RhcnNub2RlL2RhdGEvQkIuVXNlclNlcnZpY2UvYmluL3NyYy92ZW5kb3IvaWxsdW1pbmF0ZS9jb250YWluZXIvQm91bmRNZXRob2QucGhwKDM0KTogSWxsdW1pbmF0ZVxDb250YWluZXJcQm91bmRNZXRob2Q6OmNhbGxCb3VuZE1ldGhvZChPYmplY3QoTGFyYXZlbFxMdW1lblxBcHBsaWNhdGlvbiksIE9iamVjdChDbG9zdXJlKSwgT2JqZWN0KENsb3N1cmUpKSAjMTIgL3Vzci9sb2NhbC9hcHAvdGFycy90YXJzbm9kZS9kYXRhL0JCLlVzZXJTZXJ2aWNlL2Jpbi9zcmMvdmVuZG9yL2lsbHVtaW5hdGUvY29udGFpbmVyL0NvbnRhaW5lci5waHAoNTc2KTogSWxsdW1pbmF0ZVxDb250YWluZXJcQm91bmRNZXRob2Q6OmNhbGwoT2JqZWN0KExhcmF2ZWxcTHVtZW5cQXBwbGljYXRpb24pLCBPYmplY3QoQ2xvc3VyZSksIEFycmF5LCBOVUxMKSAjMTMgL3Vzci9sb2NhbC9hcHAvdGFycy90YXJzbm9kZS9kYXRhL0JCLlVzZXJTZXJ2aWNlL2Jpbi9zcmMvdmVuZG9yL2xhcmF2ZWwvbHVtZW4tZnJhbWV3b3JrL3NyYy9Db25jZXJucy9Sb3V0ZXNSZXF1ZXN0cy5waHAoMjg5KTogSWxsdW1pbmF0ZVxDb250YWluZXJcQ29udGFpbmVyLT5jYWxsKE9iamVjdChDbG9zdXJlKSwgQXJyYXkpICMxNCAvdXNyL2xvY2FsL2FwcC90YXJzL3RhcnNub2RlL2RhdGEvQkIuVXNlclNlcnZpY2UvYmluL3NyYy92ZW5kb3IvbGFyYXZlbC9sdW1lbi1mcmFtZXdvcmsvc3JjL0NvbmNlcm5zL1JvdXRlc1JlcXVlc3RzLnBocCgyNjMpOiBMYXJhdmVsXEx1bWVuXEFwcGxpY2F0aW9uLT5jYWxsQWN0aW9uT25BcnJheUJhc2VkUm91dGUoQXJyYXkpICMxNSAvdXNyL2xvY2FsL2FwcC90YXJzL3RhcnNub2RlL2RhdGEvQkIuVXNlclNlcnZpY2UvYmluL3NyYy92ZW5kb3IvbGFyYXZlbC9sdW1lbi1mcmFtZXdvcmsvc3JjL0NvbmNlcm5zL1JvdXRlc1JlcXVlc3RzLnBocCgyMzMpOiBMYXJhdmVsXEx1bWVuXEFwcGxpY2F0aW9uLT5oYW5kbGVGb3VuZFJvdXRlKEFycmF5KSAjMTYgL3Vzci9sb2NhbC9hcHAvdGFycy90YXJzbm9kZS9kYXRhL0JCLlVzZXJTZXJ2aWNlL2Jpbi9zcmMvdmVuZG9yL2xhcmF2ZWwvbHVtZW4tZnJhbWV3b3JrL3NyYy9Db25jZXJucy9Sb3V0ZXNSZXF1ZXN0cy5waHAoMTY5KTogTGFyYXZlbFxMdW1lblxBcHBsaWNhdGlvbi0+aGFuZGxlRGlzcGF0Y2hlclJlc3BvbnNlKEFycmF5KSAjMTcgL3Vzci9sb2NhbC9hcHAvdGFycy90YXJzbm9kZS9kYXRhL0JCLlVzZXJTZXJ2aWNlL2Jpbi9zcmMvdmVuZG9yL2xhcmF2ZWwvbHVtZW4tZnJhbWV3b3JrL3NyYy9Db25jZXJucy9Sb3V0ZXNSZXF1ZXN0cy5waHAoNDE2KTogTGFyYXZlbFxMdW1lblxBcHBsaWNhdGlvbi0+TGFyYXZlbFxMdW1lblxDb25jZXJuc1x7Y2xvc3VyZX0oT2JqZWN0KElsbHVtaW5hdGVcSHR0cFxSZXF1ZXN0KSkgIzE4IC91c3IvbG9jYWwvYXBwL3RhcnMvdGFyc25vZGUvZGF0YS9CQi5Vc2VyU2VydmljZS9iaW4vc3JjL3ZlbmRvci9sYXJhdmVsL2x1bWVuLWZyYW1ld29yay9zcmMvQ29uY2VybnMvUm91dGVzUmVxdWVzdHMucGhwKDE3MSk6IExhcmF2ZWxcTHVtZW5cQXBwbGljYXRpb24tPnNlbmRUaHJvdWdoUGlwZWxpbmUoQXJyYXksIE9iamVjdChDbG9zdXJlKSkgIzE5IC91c3IvbG9jYWwvYXBwL3RhcnMvdGFyc25vZGUvZGF0YS9CQi5Vc2VyU2VydmljZS9iaW4vc3JjL3ZlbmRvci9sdW94aWFvanVuMTk5Mi9sYXJhdmVsLXRhcnMvc3JjL2NvbnRyb2xsZXIvTGFyYXZlbENvbnRyb2xsZXIucGhwKDUwKTogTGFyYXZlbFxMdW1lblxBcHBsaWNhdGlvbi0+ZGlzcGF0Y2goT2JqZWN0KElsbHVtaW5hdGVcSHR0cFxSZXF1ZXN0KSkgIzIwIC91c3IvbG9jYWwvYXBwL3RhcnMvdGFyc25vZGUvZGF0YS9CQi5Vc2VyU2VydmljZS9iaW4vc3JjL3ZlbmRvci9sdW94aWFvanVuMTk5Mi9sYXJhdmVsLXRhcnMvc3JjL2NvbnRyb2xsZXIvTGFyYXZlbENvbnRyb2xsZXIucGhwKDI1KTogTHhqXExhcmF2ZWxcVGFyc1xjb250cm9sbGVyXExhcmF2ZWxDb250cm9sbGVyLT5oYW5kbGUoKSAjMjEgL3Vzci9sb2NhbC9hcHAvdGFycy90YXJzbm9kZS9kYXRhL0JCLlVzZXJTZXJ2aWNlL2Jpbi9zcmMvdmVuZG9yL3BocHRhcnMvdGFycy1zZXJ2ZXIvc3JjL2NvcmUvRXZlbnQucGhwKDExMSk6IEx4alxMYXJhdmVsXFRhcnNcY29udHJvbGxlclxMYXJhdmVsQ29udHJvbGxlci0+YWN0aW9uUm91dGUoKSAjMjIgL3Vzci9sb2NhbC9hcHAvdGFycy90YXJzbm9kZS9kYXRhL0JCLlVzZXJTZXJ2aWNlL2Jpbi9zcmMvdmVuZG9yL3BocHRhcnMvdGFycy1zZXJ2ZXIvc3JjL2NvcmUvU2VydmVyLnBocCg1NDMpOiBUYXJzXGNvcmVcRXZlbnQtPm9uUmVxdWVzdChPYmplY3QoVGFyc1xjb3JlXFJlcXVlc3QpLCBPYmplY3QoVGFyc1xjb3JlXFJlc3BvbnNlKSkgIzIzIHttYWlufSB7ImV4Y2VwdGlvbiI6IltvYmplY3RdIChTeW1mb255XFxDb21wb25lbnRcXERlYnVnXFxFeGNlcHRpb25cXEZhdGFsVGhyb3dhYmxlRXJyb3IoY29kZTogMCk6IFRvbyBmZXcgYXJndW1lbnRzIHRvIGZ1bmN0aW9uIEFwcFxcSHR0cFxcQ29udHJvbGxlcnNcXFJlZ2lzdGVyQ29udHJvbGxlcjo6U01TQ29kZSgpLCAwIHBhc3NlZCBhbmQgZXhhY3RseSAzIGV4cGVjdGVkIGF0IC91c3IvbG9jYWwvYXBwL3RhcnMvdGFyc25vZGUvZGF0YS9CQi5Vc2VyU2VydmljZS9iaW4vc3JjL2FwcC9IdHRwL0NvbnRyb2xsZXJzL1JlZ2lzdGVyQ29udHJvbGxlci5waHA6MzApIn0gW10KIjt9czoxMToiX3JlcXVlc3RCdWYiO047czoxMjoiX3Jlc3BvbnNlQnVmIjtOO3M6ODoiX3NCdWZmZXIiO047czo5OiJfaVZlcnNpb24iO2k6MTtzOjEyOiJfc2VydmFudE5hbWUiO3M6MTk6InRhcnMudGFyc2xvZy5Mb2dPYmoiO3M6OToiX2Z1bmNOYW1lIjtzOjY6ImxvZ2dlciI7czoxMToiX2lSZXF1ZXN0SWQiO2k6MTtzOjEyOiJfY1BhY2tldFR5cGUiO2k6MDtzOjEzOiJfaU1lc3NhZ2VUeXBlIjtpOjA7czoxMjoiX3RhcnNUaW1lb3V0IjtpOjIwMDA7czo5OiJfaVRpbWVvdXQiO2k6MjtzOjk6Il9jb250ZXh0cyI7YTowOnt9czo5OiJfc3RhdHVzZXMiO2E6MDp7fX1zOjc6InRpbWVvdXQiO2k6MzAwMDtzOjM6InNJcCI7czowOiIiO3M6NToiaVBvcnQiO2k6MDt9"

README.md开发guidlineservice.php错误

新建services.php文件,内容如下:

'HttpServer\\', 'monitorStoreConf' => [ //'className' => Tars\monitor\cache\RedisStoreCache::class, //'config' => [ // 'host' => '127.0.0.1', // 'port' => 6379, // 'password' => ':' //], 'className' => Tars\monitor\cache\SwooleTableStoreCache::class, 'config' => [ 'size' => 40960 ] ] ); 这里应该是 return array( 'obj'=>array( namespaceName' => 'HttpServer\\', …… ) ); 否则在tarsweb上服务部署时OBJ就不知道该填什么了

tarsphp+swoft project start failed on Tars web. I manually start the service, but it can't be reached in browser

I did a telnet on the node server. Port 18306 is connectable
Here's the config content of my service.

<tars>
        <application>
                enableset=n
                setdivision=NULL
                <server>
                        node=tars.tarsnode.ServerObj@tcp -h 172.25.0.5 -p 19386 -t 60000
                        deactivating-timeout=3000
                        app=PHPTest
                        server=swoft
                        localip=172.25.0.5
                        local=tcp -h 127.0.0.1 -p 9100 -t 3000
                        basepath=/usr/local/app/tars/tarsnode/data/PHPTest.swoft/bin/
                        datapath=/usr/local/app/tars/tarsnode/data/PHPTest.swoft/data/
                        logpath=/usr/local/app/tars/app_log/
                        loglevel=DEBUG
                        logsize=15M
                        log=tars.tarslog.LogObj
                        config=tars.tarsconfig.ConfigObj
                        notify=tars.tarsnotify.NotifyObj
                        logLevel=DEBUG
                        php=/usr/bin/php
                        buffer_output_size=12582912
                        open_tcp_nodelay=1
                        open_eof_check=0
                        open_eof_split=0
                        task_worker_num=1
                        dispatch_mode=2
                        daemonize=1
                        <PHPTest.swoft.objAdapter>
                                allow
                                endpoint=tcp -h 172.25.0.5 -p 9100 -t 60000
                                handlegroup=PHPTest.swoft.objAdapter
                                maxconns=200000
                                protocol=not_tars
                                queuecap=10000
                                queuetimeout=60000
                                servant=PHPTest.swoft.obj
                                threads=5
                        </PHPTest.swoft.objAdapter>
                </server>
                <client>
                        asyncthread=12
                        locator=tars.tarsregistry.QueryObj@tcp -h 172.25.0.3 -p 17890
                        sync-invoke-timeout=20000
                        async-invoke-timeout=20000
                        refresh-endpoint-interval=60000
                        stat=tars.tarsstat.StatObj
                        property=tars.tarsproperty.PropertyObj
                        report-interval=60000
                        modulename=PHPTest.swoft
                        sample-rate=100000
                        max-sample-count=50
                </client>
        </application>
</tars>

TarsActDemo有时候服务不通,有时候通

这个问题困扰了一段时间了,主要基于Docker镜像去跑的Demo,

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql:5.6 --innodb_use_native_aio=0
docker run -d -it --name tars --link mysql --env MOUNT_DATA=false --env DBIP=mysql --env DBPort=3306 --env DBUser=root --env DBPassword=123456 -P tarscloud/tars:php
docker run --name some-redis -d redis

IP

/swordtars - 172.17.0.3
/mysql - 172.17.0.2
/some-tars -
/some-redis - 172.17.0.4

服务与绑定地址如下


QD.ActCommentServer.CommentObj | tcp -h 172.17.0.3 -t 60000 -p 20201 -e 0
-- | --

QD.UserService.UserObj | tcp -h 172.17.0.3 -t 60000 -p 20107 -e 0
-- | --

QD.ActHttpServer.obj | tcp -h 172.17.0.3 -t 60000 -p 20003 -e 0
-- | --

三种镜像如上,错误表现如下,

image

经过大概半小时刷新页面,问题消失
image

查看log情况
/data/tars/app_log/QD
该目录下,三种服务都无错误报出,
之后去/data/tars/app_log/tars这个目录下查看各类服务的log情况,具体结果如下:

 cat tarsAdminRegistry/tars.tarsAdminRegistry.log | grep ERROR
2019-01-16 14:50:51|386|ERROR|[TARS][CommunicatorEpoll::handleInputImp] connect error tcp -h 172.17.0.3 -p 10002,tars.tarsnotify.NotifyObj,_connExcCnt=1,Connection refused

 cat tarsnotify/tars.tarsnotify.log | grep ERROR
2019-01-16 14:50:51|549|ERROR|NotifyImp::IsdbTableExist sTbName:t_server_notifys|doesn't exist
2019-01-16 14:50:51|548|ERROR|NotifyImp::IsdbTableExist sTbName:t_server_notifys|doesn't exist
2019-01-16 14:50:51|548|ERROR|NotifyImp::creatTb exception:[TC_Mysql::execute]: mysql_query: [ CREATE TABLE `t_server_notifys` (   `id` int(11) NOT NULL AUTO_INCREMENT,  `application` varchar(128) DEFAULT '',  `server_name` varchar(128) DEFAULT NULL, `container_name` varchar(128) DEFAULT '' , `node_name` varchar(128) NOT NULL DEFAULT '',  `set_name` varchar(16) DEFAULT NULL,  `set_area` varchar(16) DEFAULT NULL,  `set_group` varchar(16) DEFAULT NULL,  `server_id` varchar(100) DEFAULT NULL,  `thread_id` varchar(20) DEFAULT NULL,  `command` varchar(50) DEFAULT NULL,  `result` text,  `notifytime` datetime DEFAULT NULL,  PRIMARY KEY (`id`),  KEY `index_name` (`server_name`),  KEY `servernoticetime_i_1` (`notifytime`),  KEY `indx_1_server_id` (`server_id`),  KEY `query_index` (`application`,`server_name`,`node_name`,`set_name`,`set_area`,`set_group`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ] :Table 't_server_notifys' already exists
2019-01-16 14:50:51|548|ERROR|NotifyImp::reportNotifyInfo insert2Db exception:[TC_Mysql::execute]: mysql_query: [ insert into t_server_notifys (`application`,`container_name`,`node_name`,`notifytime`,`result`,`server_id`,`server_name`,`set_area`,`set_group`,`set_name`,`thread_id`) values ('tars','','172.17.0.3',now(),'restart','tars.tarsconfig_172.17.0.3','tarsconfig','','','','140566645450880') ] :Table 'db_tars.t_server_notifys' doesn't exist
2019-01-16 14:50:51|549|ERROR|NotifyImp::reportNotifyInfo insert2Db exception:[TC_Mysql::execute]: mysql_query: [ insert into t_server_notifys (`application`,`container_name`,`node_name`,`notifytime`,`result`,`server_id`,`server_name`,`set_area`,`set_group`,`set_name`,`thread_id`) values ('tars','','172.17.0.3',now(),'restart','tars.tarspatch_172.17.0.3','tarspatch','','','','140279281969280') ] :Table 'db_tars.t_server_notifys' doesn't exist
[root@55d9c1126c25 tars]#  cat tarsAdminRegistry/tars.tarsAdminRegistry.log | grep ERROR 2019-01-16 14:50:51|386|ERROR|[TARS][CommunicatorEpoll::handleInputImp] connect error tcp -h 172.17.0.3 -p 10002,tars.tarsnotify.NotifyObj,_connExcCnt=1,Connection refused

cat tarspatch/tars.tarspatch.log | grep ERROR
2019-01-16 15:24:17|504|ERROR|PatchCache::load sFile:/usr/local/app/patchs/tars/TARSBatchPatching/QD/ActCommentServer/QD.ActCommentServer.tgz|invalid file size must(104857600>238631<1048576)
2019-01-16 15:24:17|504|ERROR|PatchImp::__downloadFromMem file:/usr/local/app/patchs/tars/TARSBatchPatching/QD/ActCommentServer/QD.ActCommentServer.tgz|pos:0|LoadFile error
2019-01-16 15:24:17|517|ERROR|PatchCache::load sFile:/usr/local/app/patchs/tars/TARSBatchPatching/QD/ActCommentServer/QD.ActCommentServer.tgz|invalid file size must(104857600>238631<1048576)
2019-01-16 15:24:17|517|ERROR|PatchImp::__downloadFromMem file:/usr/local/app/patchs/tars/TARSBatchPatching/QD/ActCommentServer/QD.ActCommentServer.tgz|pos:238631|LoadFile error
2019-01-16 15:24:41|504|ERROR|PatchCache::load sFile:/usr/local/app/patchs/tars/TARSBatchPatching/QD/UserService/QD.UserService.tgz|invalid file size must(104857600>269965<1048576)
2019-01-16 15:24:41|504|ERROR|PatchImp::__downloadFromMem file:/usr/local/app/patchs/tars/TARSBatchPatching/QD/UserService/QD.UserService.tgz|pos:0|LoadFile error
2019-01-16 15:24:41|517|ERROR|PatchCache::load sFile:/usr/local/app/patchs/tars/TARSBatchPatching/QD/UserService/QD.UserService.tgz|invalid file size must(104857600>269965<1048576)
2019-01-16 15:24:41|517|ERROR|PatchImp::__downloadFromMem file:/usr/local/app/patchs/tars/TARSBatchPatching/QD/UserService/QD.UserService.tgz|pos:269965|LoadFile error
2019-01-16 15:25:21|513|ERROR|PatchCache::load sFile:/usr/local/app/patchs/tars/TARSBatchPatching/QD/ActHttpServer/QD.ActHttpServer.tgz|invalid file size must(104857600>242132<1048576)
2019-01-16 15:25:21|513|ERROR|PatchImp::__downloadFromMem file:/usr/local/app/patchs/tars/TARSBatchPatching/QD/ActHttpServer/QD.ActHttpServer.tgz|pos:0|LoadFile error
2019-01-16 15:25:21|517|ERROR|PatchCache::load sFile:/usr/local/app/patchs/tars/TARSBatchPatching/QD/ActHttpServer/QD.ActHttpServer.tgz|invalid file size must(104857600>242132<1048576)
2019-01-16 15:25:21|517|ERROR|PatchImp::__downloadFromMem file:/usr/local/app/patchs/tars/TARSBatchPatching/QD/ActHttpServer/QD.ActHttpServer.tgz|pos:242132|LoadFile error


 cat tarsproperty/tars.tarsproperty.log | grep ERROR
2019-01-16 15:59:41|529|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:5229]: buffer size:1
2019-01-16 15:59:41|529|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:5230]: buffer size:1
2019-01-16 15:59:41|529|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:5231]: buffer size:1
2019-01-16 15:59:41|529|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:5232]: buffer size:1
2019-01-16 15:59:41|529|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:5233]: buffer size:1
2019-01-16 15:59:41|529|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:5234]: buffer size:1
2019-01-16 15:59:41|529|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:5235]: buffer size:1
2019-01-16 15:59:41|529|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:5236]: buffer size:1
2019-01-16 15:59:41|529|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:5237]: buffer size:1

 cat tarsregistry/tars.tarsregistry.log | grep ERROR
2019-01-16 14:50:51|393|ERROR|[TARS][CommunicatorEpoll::handleInputImp] connect error tcp -h 172.17.0.3 -p 10002,tars.tarsnotify.NotifyObj,_connExcCnt=1,Connection refused

cat tarsstat/tars.tarsstat.log | grep ERROR
2019-01-16 16:05:22|563|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:8636]: buffer size:1
2019-01-16 16:05:22|563|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:8637]: buffer size:1
2019-01-16 16:05:22|563|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:8638]: buffer size:1
2019-01-16 16:05:22|563|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:8639]: buffer size:1
2019-01-16 16:05:22|563|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:8640]: buffer size:1
2019-01-16 16:05:23|563|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:8641]: buffer size:1
2019-01-16 16:05:23|563|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:8642]: buffer size:1
2019-01-16 16:05:23|563|ERROR|[TARS] write to remote log server error:server servant mismatch exception: ret:-4 msg:[ServantProxy::invoke errno:-4,info:,servant:tars.tarslog.LogObj,func:loggerbyInfo,adaptertcp -h 172.17.0.3 -p 10003,reqid:8643]: buffer size:1

还有一个问题,使用web管理界面部署服务,当提示成功的时候,就代表服务已经部署好了?,还是说需要一定的时间?

Thanks in advance.

TarsActDemo中小bug

TarsPHP/examples/TarsActDemo/QD.ActHttpServer/src/model/ActCommentModel.php
TarsPHP/examples/TarsActDemo/QD.ActHttpServer/src/model/UserInfoModel.php

在以上两个文件中,关于serverIp 的地址有问题。
image

$commonIn->serverIp = '127.0.01';
这里IP地址写错。

Tars协议中请求参数基于json序列化,整个包基于tars协议序列化

tarsgo中扩展了tars协议,当JSONVERSION version = 257时,tars协议包中的SBuffer以json序列化方式写入;
req := requestf.RequestPacket{
IVersion: s.version,
CPacketType: int8(ctype),
IRequestId: atomic.AddInt32(&msgID, 1),
SServantName: s.name,
SFuncName: sFuncName,
SBuffer: tools.ByteToInt8(buf), //buf基于json序列化
ITimeout: s.comm.Client.ReqDefaultTimeout,
Context: reqContext,
Status: status,
IMessageType: msgType,
}
其他字段已原有tars格式序列化
望tarsphp能尽快支持对应功能

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.