# 常见问题总汇

### 关于too many openfile问题

由Linux系统默认情况下只允许建立一个相关效低的网络连接数，所以需要使用ulimit -a查看当时系统的限制数，一般通过“sudo ulimit -u 数量” 和 “sudo ulimit -n 数量”进行相关参数设置。如需永久生效设置请参阅本手册中的（单机千万连接测试）章节。

### 当前流行的物联网协议有？

MQTT、MQTT-SN、CoAP、WebSocket

### Coolpy7与普通MQTT服务器的区别？

Coolpy7的亮点是万物皆是消息，通过自主研发的CGP协议，任何Coolpy7端都可以直接操作数据库，外加用户中心控制

### Coolpy7添加自己业务的两种方式？

通过dbpoxy操作数据库和Coolpy7的hook，hook实现的功能有\[用户鉴定和授权]、\[subs消息过滤]、\[pubs消息收集]

### Coolpy7的集群？

使用高效率的quic协议

### Coolpy7的客户端ID的约定？

不能用空，也不能包括“-”，用UUID的同学此处需要做额外处理

### CGP协议支持多表查询？

支持，在对应的sql语句中，写多表查询的sql即可，其中，对于表名的声明为主表。

### 后期增加的功能？

有订阅和取消订阅、客户端意外断开

### Coolpy7是否有缓存客户端列表？

没有

### Coolpy7判断对应在线的具体方法？

通过消息来做到判断下对方是否在线，做法如下：例如当连接成功就订阅一个qos 0的私有地址，把它当ping用，你pub一个消息去这个地址，如果有回复他就是在线的

### pubs中的newpayload介绍？

newpayload是直接function返回到cp7内核去做发送用的，http那个是body，你http要哪个都可以，你自己随意，newpayload如果==“”的话内核不会替换原来的payload

### 如果你用同一个clientID去连接Coolpy7？

那么前一个会被T掉，同学们注意。

### Coolpy7今后会桥接的中间件？

Kafka/RocketMQ/RabbitMQ

### Coolpy7支持的数据通信格式？

支持json和msgpack，msgpack比protobuffer快

### 心跳检测的设置？

Coolpy7严格依照MQTT协议，不支持设置心跳超时机制

### Coolpy7的订阅-发布模式？

mqtt要求每个订阅都有回应包，如果你不允许订阅回应包协议没有定义订阅失败的回应包，要么就订阅逻辑不生效，然后返回一个订阅成功的包回去，不然客户端为认为没有等到订阅包而关闭连接

### 对于发布消息的负载均衡处理？

比如我有三个订阅了/usr/local 那么我现在发送一个/usr/local，coolpy7是三个订阅都会收到信息。 后期增加过滤功能，实现负载，类似于Kafka和RocketMQ中的组消费

### Coolpy7的后台管理？

你的官网+社区+IOT平台，一整套用Coolpy7 oauth2做用户中心就是同一套用户账号系统公用

### 关于Coolpy7客户端对数据库操作权限的控制？

解决方案正在路上.....可能，会增加类似拦截器的功能，来实现过滤

### 为什么我登陆时密码无法传送到hook代码里？

用户登陆时，一但需要使用密码标识即必需用户名标识不为空，因为没有填空用户名信息导致的。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/chang-jian-wen-ti-zong-hui.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
