825 lines
24 KiB
Markdown
825 lines
24 KiB
Markdown
# 运营指令
|
||
|
||
- 使用方法
|
||
```
|
||
post url: http:masterip:masterport/baseurl
|
||
post body:
|
||
json格式,例如:
|
||
{
|
||
"serverId":3,
|
||
"ip":"192.168.43.170",
|
||
"port":12001,
|
||
"masterPort":12002,
|
||
"type":"lobby"
|
||
}
|
||
response:
|
||
json格式,格式:
|
||
{
|
||
"code":1, #1是成功,2是失败
|
||
"message":"reason",#若是失败,则介绍失败原因
|
||
"entity":content #详细信息
|
||
}
|
||
```
|
||
开发者可以登录到master所在机器,用curl命令发请求,使用方式如下:
|
||
```
|
||
curl -X POST http://masterip:masterport/baseurl -d 'postbody'
|
||
```
|
||
若通过"/online-num/query"指令获取game在线人数,则可以在master上发送如下curl命令:
|
||
```
|
||
curl -X POST http://11.11.11.11:8503/online-num/query -d '{"server_type":"game"}'
|
||
```
|
||
若需要使用商城插件neteaseShop中查询订单运营指令(/check-single-order指令),则可以在master上发送如下curl命令:
|
||
```
|
||
curl -X POST http://11.11.11.11:8503/check-single-order -d '{"orderid" : 1234,"uid" : 123456789}'
|
||
```
|
||
|
||
## 查询UID
|
||
|
||
* **/netease/get-online-uids**
|
||
|
||
- 描述
|
||
|
||
查询当前在线玩家的uid
|
||
|
||
- 无post body json参数
|
||
|
||
- response entity参数
|
||
dict。key是服务器id,value是在线玩家uid列表;当对应服务器中不存在玩家时,服务器id不会作为key出现
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/netease/get-online-uids
|
||
post body:
|
||
{
|
||
}
|
||
response:
|
||
{
|
||
"code": 0,
|
||
"message": "",
|
||
"entity": {
|
||
"4000":[1989540401,2147585444]
|
||
}
|
||
}
|
||
```
|
||
|
||
* **/netease/get-lazy-uids**
|
||
|
||
- 描述
|
||
|
||
查询最近请求登录玩家的uid以及请求登录时间
|
||
|
||
- 无post body json参数
|
||
|
||
- response entity参数
|
||
list(string)。每条记录上有uid和对应请求登录的时间,按照登录请求时间远近排序(越近越在前);最多30条
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/netease/get-lazy-uids
|
||
post body:
|
||
{
|
||
}
|
||
response:
|
||
{
|
||
"code": 0,
|
||
"message": "",
|
||
"entity": {
|
||
"uid=680116908 login=2021-05-26 15:12:41",
|
||
"uid=1989540401 login=2021-05-26 15:12:08",
|
||
"uid=2147585444 login=2021-05-26 15:11:24"
|
||
}
|
||
}
|
||
```
|
||
|
||
## 在线人数
|
||
* **/netease/update-player-online-limit**
|
||
|
||
- 描述
|
||
|
||
修改全局最高同时在线人数限制
|
||
|
||
- post body 参数
|
||
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| online_limit | int | 需要设置的最高同时在线人数,当设置为0时代表不限制最高同时在线|
|
||
|
||
- response entity参数
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| code | int | 整个指令的返回码,1为成功,其他数字为失败|
|
||
| message | str | 整个指令的返回结果描述,一般成功时会空,失败时会描述失败原因|
|
||
| entity | dict | 关键字version为当前配置文件中,全局同时在线人数限制的版本号,暂时无用;关键字old_online_limit为修改前,全局最高同时在线人数的限制,返回0代表修改前,没有限制最高同时在线|
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/netease/update-player-online-limit
|
||
post body:
|
||
{
|
||
"online_limit":8000
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": {
|
||
"version": 0,
|
||
"old_online_limit": 6000
|
||
},
|
||
"message": ""
|
||
}
|
||
```
|
||
|
||
* **/online-num/query**
|
||
|
||
- 描述
|
||
|
||
获取proxy/lobby/game在线人数或获取总在线人数。
|
||
|
||
- post body 参数
|
||
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| serverType | str | 服务器类型,比如"lobby","game","proxy",若不传入该值,则表示总在线人数|
|
||
|
||
- response entity参数
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| onlineNum | int | 在线人数|
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/online-num/query
|
||
post body:
|
||
{
|
||
"serverType":"game"
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": {
|
||
"onlineNum": 0
|
||
},
|
||
"message": ""
|
||
}
|
||
```
|
||
|
||
* **/online-num/query-by-server-id**
|
||
|
||
- 描述
|
||
|
||
获取某个proxy/game/lobby在线人数
|
||
|
||
- post body参数
|
||
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| serverId | int | 服务器id|
|
||
|
||
- response entity参数
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| onlineNum | int | 在线人数|
|
||
- 示例:
|
||
|
||
```
|
||
post url: http://111.222.333.444:1101/online-num/query-by-server-id
|
||
post body:
|
||
{
|
||
"serverId":1
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": {
|
||
"onlineNum": 2
|
||
},
|
||
"message": ""
|
||
}
|
||
```
|
||
|
||
## 日志等级
|
||
|
||
* **/conf/set-log-debug-level**
|
||
|
||
- 描述
|
||
|
||
开服工具日志等级设置为debug或info level等级
|
||
|
||
- post body 参数
|
||
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| debugLevel | bool | true:则日志设置为debug log level;false:日志设置为info log level |
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/conf/set-log-debug-level
|
||
post body:
|
||
{
|
||
"debugLevel":false
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
```
|
||
|
||
* **/conf/set-server-log-debug-level**
|
||
|
||
- 描述
|
||
|
||
设置某个服务器的日志等级。
|
||
|
||
- post body 参数
|
||
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| serverId | int | 服务器id。可以是proxy、lobby、game、service的serverid。若为0,则表示master。|
|
||
| debugLevel | bool | true:则日志设置为debug log level;false:日志设置为info log level |
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/conf/set-server-log-debug-level
|
||
post body:
|
||
{
|
||
"serverId":1,
|
||
"debugLevel":false
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
```
|
||
## 服务器
|
||
|
||
* **/query-all-server-status**
|
||
|
||
- 描述
|
||
|
||
查询所有服务器状态
|
||
|
||
- 无post body json参数
|
||
|
||
- response entity参数
|
||
dict。key是服务器id,value是服务器状态。服务器状态有:
|
||
1:断开连接状态
|
||
2:已连接状态
|
||
3:关服状态
|
||
4:优雅关服状态
|
||
6, 滚动更新中间状态,即将转换到状态7
|
||
7 也是滚动更新中间状态,即将转换到状态1或2
|
||
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/query-all-server-status
|
||
post body:
|
||
{
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": {
|
||
"1": 1,
|
||
"2": 1
|
||
}
|
||
"message": ""
|
||
}
|
||
```
|
||
|
||
* **/query-one-server-status**
|
||
|
||
- 描述
|
||
|
||
查询某个服务器状态
|
||
|
||
- post body 参数
|
||
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| serverId | int | proxy/lobby/game服务器id |
|
||
|
||
- response entity参数
|
||
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| status | int | 服务器状态。服务器状态有:服务器状态如下:<br/> 1:断开连接状态<br/> 2:已连接状态<br/> 3:关服状态<br/> 4:优雅关服状态<br/> 6, 滚动更新中间状态,即将转换到状态7<br/> 7 也是滚动更新中间状态,即将转换到状态1或2 |
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/query-one-server-status
|
||
post body:
|
||
{
|
||
"serverId":1
|
||
}
|
||
response:
|
||
{
|
||
"message": "",
|
||
"code": 1,
|
||
"entity": {
|
||
"status": 1
|
||
}
|
||
}
|
||
```
|
||
## 禁言,解除禁言
|
||
|
||
* **/silent**
|
||
|
||
- 描述
|
||
|
||
禁言某个玩家
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| uid |int | 玩家id |
|
||
| banTime |int | 禁言时间,单位为秒,-1表示永封|
|
||
| reason |str | 禁言原因|
|
||
| type |str | 禁言类型,可自定义,公屏禁言为`Commom`|
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/silent
|
||
post body:
|
||
{
|
||
"uid":11111,
|
||
"banTime":40,
|
||
"reason":"玩家作弊",
|
||
"type":"Common"
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
```
|
||
|
||
* **/unban-silent**
|
||
|
||
- 描述
|
||
|
||
解除某个玩家的禁言
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| uid |int | 解除禁言玩家的uid|
|
||
| type |str | 禁言类型,可自定义,公屏禁言为`Commom`|
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/unban-silent
|
||
post body:
|
||
{
|
||
"uid":11111,
|
||
"type":"Commom"
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
```
|
||
|
||
* **/global-silent**
|
||
|
||
- 描述
|
||
|
||
全局公屏禁言开关
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| isSilent |bool | 全局禁言开关,`true`表示开启全局禁言,`false`表示关闭全局禁言|
|
||
| reason |str | 禁言原因|
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/global-silent
|
||
post body:
|
||
{
|
||
"isSilent":true,
|
||
"reason":"系统维护"
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
```
|
||
|
||
## 踢出玩家
|
||
|
||
* **/kickout-user**
|
||
|
||
- 描述
|
||
|
||
把某个玩家从游戏中踢出
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| uid |int | 被踢出玩家的uid|
|
||
| reason |str | 踢出原因|
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/kickout-user
|
||
post body:
|
||
{
|
||
"uid":11111,
|
||
"reason":"玩家作弊",
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
```
|
||
## 封禁,解除封禁
|
||
|
||
* **/ban-user**
|
||
|
||
- 描述
|
||
|
||
封禁某个玩家
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| uid |int | 封禁玩家的uid|
|
||
| banTime |int | 封禁时间,单位为秒,-1表示永封|
|
||
| reason |str | 封禁原因|
|
||
| bCombineReason |bool | 是否组合显示封禁原因。若为True,则按备注说明处理,否则被封禁玩家登陆会提示【reason】|
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/ban-user
|
||
post body:
|
||
{
|
||
"uid":11111,
|
||
"banTime":40,
|
||
"reason":"玩家作弊",
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
```
|
||
- 备注
|
||
若banTime>0,则被封禁玩家登陆提示:您的账号已经被封禁,剩余封禁时间:x天y小时z分,封禁原因:【reason】。如有疑问,请前往客服专区反馈
|
||
若banTime=-1,则被封禁玩家登陆提示:您的账号已经被永久封禁,封禁原因:【reason】。如有疑问,请前往客服专区反馈
|
||
|
||
* **/unban-user**
|
||
|
||
- 描述
|
||
|
||
解除某个玩家的封禁
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| uid |uint32 | 解除封禁玩家的uid|
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/unban-user
|
||
post body:
|
||
{
|
||
"uid":11111,
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
```
|
||
## 强制解除玩家在线标识
|
||
|
||
* **/netease/release-online-lock**
|
||
|
||
- 描述
|
||
|
||
强制解除指定UID玩家的在线标识
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| uidList |list(int) | 需要解除在线标识的玩家的UID列表|
|
||
|
||
- response entity参数
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| sucUids | list(int) | 成功解除玩家在线标识的UID列表,包括请求时已经不在线的|
|
||
| failUids | list(int) | 解除玩家在线标识失败的UID列表|
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/netease/release-online-lock
|
||
post body:
|
||
{
|
||
"uidList":[2147585444,2819362897],
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"message": "",
|
||
"entity": {
|
||
"sucUids": [2147585444,2819362897],
|
||
"failUids": []
|
||
}
|
||
}
|
||
```
|
||
|
||
* **/netease/release-online-lock-by-server**
|
||
|
||
- 描述
|
||
|
||
强制解除指定ID服务器当前在线玩家的在线标识
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| serverId |list(int) | 需要解除在线标识的服务器ID|
|
||
|
||
- response entity参数
|
||
| 关键字 | 数据类型 | 说明 |
|
||
| ---------- | -------- | ------------ |
|
||
| sucUids | list(int) | 成功解除玩家在线标识的UID列表|
|
||
| failUids | list(int) | 解除玩家在线标识的UID列表|
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/netease/release-online-lock-by-server
|
||
post body:
|
||
{
|
||
"serverId": 4000,
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"message": "",
|
||
"entity": {
|
||
"sucUids": [2147585444,2819362897],
|
||
"failUids": []
|
||
}
|
||
}
|
||
```
|
||
|
||
|
||
## 停服维护
|
||
|
||
* **/invalid-all-servers**
|
||
|
||
- 描述
|
||
|
||
开启/关闭停服维护
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| invalid |bool | 停服维护开关,`true`表示开启停服维护,`false`表示关闭停服维护|
|
||
| reason |str | 停服维护原因|
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/invalid-all-servers
|
||
post body:
|
||
{
|
||
"invalid":true,
|
||
"reason":"停服维护",
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
```
|
||
## Hunter调试命令
|
||
|
||
* **/netease/hunter-debug**
|
||
|
||
- 描述
|
||
|
||
使目的服务器执行Python脚本,脚本中使用**print**打印的信息会体现在请求返回中,同时,也会打印到目的服务器的日志文件中,具体是"hunterDebug exec"日志的下面n行日志。
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| opServerIds |list(int) |可选参数,需要执行python脚本的服务器ID列表,0表示为master|
|
||
| opServerType |str |可选参数,需要执行python脚本的服务器类型列表|
|
||
| script |str | 服务器需要执行的python脚本,用`\n`换行|
|
||
| command |str | 服务器需要执行的控制台命令|
|
||
|
||
- response entity参数
|
||
dict。key是服务器id,value也是一个dict,有两个key,code和message
|
||
code=0代表在对应服务器上执行脚本成功,此时message中的信息为脚本中**print**打印的信息;
|
||
code=1代表在对应服务器上执行脚本失败,此时message中的信息为失败的原因;
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/netease/hunter-debug
|
||
post body:
|
||
{
|
||
"opServerIds": [0,8000,4000,6000],
|
||
"script":"import time\nprint time.time()"
|
||
}
|
||
response:
|
||
{
|
||
"code": 0,
|
||
"message": "",
|
||
"entity": {
|
||
"0": {"message": "1623327430.98\n", "code": 0},
|
||
"4000": {"message": "1623327431.04\n", "code": 0},
|
||
"6000": {"message": "1623327431.04\n", "code": 0},
|
||
"8000": {"message": "1623327431.04\n", "code": 0}
|
||
}
|
||
}
|
||
对应服务器日志文件中包含下面日志:
|
||
[2019-06-03 10:21:29 INFO] Python:hunterDebug exec
|
||
[2019-06-03 10:21:29 INFO] Python:1559543269.12
|
||
```
|
||
|
||
* **/hunter-debug**
|
||
|
||
- 描述
|
||
|
||
使目的服务器执行Python脚本,其结果打印到目的服务器的日志文件中,具体是"hunterDebug exec"日志的下面n行日志。
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| serverId |int |服务器对应ID,0表示为master|
|
||
| script |str | 服务器需要执行的python脚本,用`\n`换行|
|
||
| command |str | 服务器需要执行的控制台命令|
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/hunter-debug
|
||
post body:
|
||
{
|
||
"serverId":101,
|
||
"script":"import time\nprint time.time()"
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
101服务器日志文件中包含下面日志:
|
||
[2019-06-03 10:21:29 INFO] Python:hunterDebug exec
|
||
[2019-06-03 10:21:29 INFO] Python:1559543269.12
|
||
```
|
||
## 性能分析
|
||
|
||
* **/check-memory-run**
|
||
|
||
- 描述
|
||
|
||
检查服务器脚本层内存泄漏。需要执行两次指令,第一次生成快照,第二次生成同第一次的diff。
|
||
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| serverId |int ||
|
||
| useList |list | 通常是 ["tracemalloc", "objreport"]|
|
||
| objNames |list | 通常是空|
|
||
|
||
- 无response entity参数
|
||
|
||
- 示例:
|
||
```
|
||
post url: http://111.222.333.444:1101/check-memory-run
|
||
post body:
|
||
{
|
||
"serverId":101,
|
||
"useList":["tracemalloc", "objreport"],
|
||
"objNames":[]
|
||
}
|
||
response:
|
||
{
|
||
"code": 1,
|
||
"entity": null,
|
||
"message": ""
|
||
}
|
||
|
||
服务器日志文件包含下面日志:
|
||
[2019-09-11 17:09:33 INFO] Python:run_tracemalloc traceback
|
||
[2019-09-11 17:09:33 INFO] Python:[ Top 10 differences ]
|
||
[2019-09-11 17:09:33 INFO] Python:/tmp/tmpxlycSu/scripts/mod/server/memory/obj_report.py:43: size=12.0 KiB (+12.0 KiB), count=1 (+1), average=12.0 KiB
|
||
[2019-09-11 17:09:33 INFO] Python:/tmp/tmpxlycSu/scripts/mod/server/memory/obj_report.py:45: size=10.0 KiB (+10.0 KiB), count=11 (+11), average=992 B
|
||
[2019-09-11 17:09:33 INFO] Python:/tmp/tmpxlycSu/scripts/mod/server/memory/check_memory.py:61: size=10.0 KiB (+10.0 KiB), count=127 (+127), average=84 B
|
||
[2019-09-11 17:09:33 INFO] Python:/tmp/tmpxlycSu/scripts/mod/server/memory/obj_report.py:12: size=1736 B (+1736 B), count=6 (+6), average=289 B
|
||
[2019-09-11 17:09:33 INFO] Python:/tmp/tmpxlycSu/scripts/mod/server/memory/obj_report.py:6: size=1007 B (+1007 B), count=5 (+5), average=201 B
|
||
[2019-09-11 17:09:33 INFO] Python:/usr/local/lib/python2.7/site-packages/tracemalloc.py:380: size=864 B (+864 B), count=4 (+4), average=216 B
|
||
[2019-09-11 17:09:33 INFO] Python:/usr/local/lib/python2.7/json/decoder.py:380: size=704 B (+704 B), count=11 (+11), average=64 B
|
||
[2019-09-11 17:09:33 INFO] Python:/usr/local/lib/python2.7/site-packages/tracemalloc.py:518: size=672 B (+672 B), count=4 (+4), average=168 B
|
||
[2019-09-11 17:09:33 INFO] Python:<unknown>:0: size=650 B (+650 B), count=2 (+2), average=325 B
|
||
[2019-09-11 17:09:33 INFO] Python:/tmp/tmpxlycSu/scripts/mod/server/memory/check_memory.py:66: size=544 B (+544 B), count=1 (+1), average=544 B
|
||
[2019-09-11 17:09:33 INFO] Python:[QA] [DIFF_MORE]
|
||
[2019-09-11 17:09:33 INFO] Python:[QA] [DIFF_LESS]
|
||
[2019-09-11 17:09:33 INFO] Python:-2 <type 'tuple'>
|
||
|
||
日志说明,打印了两次【/check-memory】间,内存变化前十的文件,两次指令间,减少了2个tuple的实例。
|
||
```
|
||
|
||
* **/profile**
|
||
- 描述
|
||
|
||
用于测量python函数占用cpu时间。需要执行两次指令,第一次开始profile,第二次生成性能数据文件。性能数据文件放到执行文件所在目录下的profile子目录中。性能数据文件名的格式:profile+生成文件的时间戳
|
||
- post body json参数
|
||
|
||
| 关键字 | 数据类型| 说明 |
|
||
| ------------ | -----------| ------------ |
|
||
| serverId |int ||服务器对应ID。0表示为master,-1表示所有服务器,其他表示lobby/game/service的服务器ID|
|
||
| bBegin |bool |true:开始profile;false:完成profile|
|
||
|
||
- 无response entity参数
|
||
- 示例:
|
||
```
|
||
性能数据文件名:profile_1574325974
|
||
文件内容:
|
||
33 function calls in 0.000 seconds
|
||
|
||
Ordered by: internal time
|
||
|
||
ncalls tottime percall cumtime percall filename:lineno(function)
|
||
1 0.000 0.000 0.000 0.000 {_log.logInfo}
|
||
2 0.000 0.000 0.000 0.000 logout.py:83(write)
|
||
1 0.000 0.000 0.000 0.000 logout.py:62(split_and_log)
|
||
1 0.000 0.000 0.000 0.000 netServerApp.py:17(TickApp)
|
||
1 0.000 0.000 0.000 0.000 Queue.py:93(empty)
|
||
1 0.000 0.000 0.000 0.000 timer.py:72(scheduler)
|
||
1 0.000 0.000 0.000 0.000 idvScript.modMaster.httpHandlerSys:141(Update)
|
||
1 0.000 0.000 0.000 0.000 async_task_pool.py:293(schedule)
|
||
1 0.000 0.000 0.000 0.000 netgameApp.py:3(Tick)
|
||
1 0.000 0.000 0.000 0.000 async_task_pool.py:302(exec_callback)
|
||
2 0.000 0.000 0.000 0.000 {len}
|
||
1 0.000 0.000 0.000 0.000 baseApp.py:73(ClearNeedsUpdate)
|
||
5 0.000 0.000 0.000 0.000 {method 'has_key' of 'dict' objects}
|
||
1 0.000 0.000 0.000 0.000 {time.time}
|
||
1 0.000 0.000 0.000 0.000 {method 'acquire' of 'thread.lock' objects}
|
||
1 0.000 0.000 0.000 0.000 {method 'replace' of 'str' objects}
|
||
2 0.000 0.000 0.000 0.000 {method 'splitlines' of 'str' objects}
|
||
1 0.000 0.000 0.000 0.000 mongopool.py:194(tick)
|
||
1 0.000 0.000 0.000 0.000 redispool.py:274(do_tick)
|
||
1 0.000 0.000 0.000 0.000 Queue.py:200(_qsize)
|
||
1 0.000 0.000 0.000 0.000 memoryScripts.MasterMemorySys:21(Update)
|
||
1 0.000 0.000 0.000 0.000 {method 'release' of 'thread.lock' objects}
|
||
1 0.000 0.000 0.000 0.000 redispool.py:271(tick)
|
||
3 0.000 0.000 0.000 0.000 baseSystem.py:86(Update)
|
||
内容解读:
|
||
第一行:33个函数调用被监控,这些函数占用cpu总运行时间为0.000秒
|
||
接下来输出个字段含义:
|
||
ncalls:表示函数调用的次数;
|
||
tottime:表示指定函数的总的运行时间,除掉函数中调用子函数的运行时间;
|
||
percall:(第一个percall)等于 tottime/ncalls;
|
||
cumtime:表示该函数及其所有子函数的调用运行的时间,即函数开始调用到返回的时间;
|
||
percall:(第二个percall)即函数运行一次的平均时间,等于 cumtime/ncalls;
|
||
filename:lineno(function):每个函数调用的具体信息;
|
||
|
||
``` |