背景
kuiper的官網中有提到:kuiper支援8000條規則下的資料路由處理,于是我便嘗試搭建該測試環境試試。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yMzcTMyIzMzAjMtYjM3gjM1UTOxMDMyATMyAjMtMjN3EzNz8CXyATMyAjMvw1M2cTM3MzLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
測試方法
kuiper規則數上限測試的突發問題
如圖,我搭建了一個虛機來跑Kuiper,Kuiper會訂閱Emqx Broker的Topic,這時候我用一個MQTT用戶端(比如MQTTBox或者Jmeter)向Emqx Broker特定topic發送消息。Kuiper中的規則引擎就會對訂閱到的每條消息進行過濾處理(即類似執行sql),并輸出到Kuiper的日志中。
突發問題
使用前文提到的環境,在kuiper上建立了8000條規則,然後重新開機一下kuiper機器。
docker restart kuiper
1)檢視kuiper的日志:
如果在kuiper容器内部:tail -f log/stream.log
如果是在主控端上:docker logs -f kuiper
可以看到日志報錯說連EMQX Broker的1883端口逾時了,這裡每個規則都會向EMQX Broker訂閱一個topic(圖中有提到subscribe to topic)。
這裡就有些奇怪了,EMQX号稱能撐近百萬連接配接,為啥不到6000多連結數就扛不住了呢,是不是有bug?
2)檢視emqx日志
tailf -f /var/log/emqx/emqx.log.1
可以看到這裡EMQX報錯了,說檔案描述符超限了。
3)修改檔案描述符
執行:vi /etc/sysctl.conf,寫入如下内容:
fs.file-max = 12553500
fs.nr_open = 12453500
輸入:x儲存退出,然後執行sysctl -p使之生效。
4)重新開機emqx
sudo systemctl restart emqx
5)再次檢視kuiper日志
通過:curl http://localhost:9081/rules,可以看到
8000條規則建立成功,真相大白,果然不是EMQX的鍋。
部落客:測試生财(一個不為996而996的測開碼農)
座右銘:專注測試開發與自動化運維,努力讀書思考寫作,為内卷的人生奠定财務自由。
内容範疇:技術提升,職場雜談,事業發展,閱讀寫作,投資理财,健康人生。
csdn:https://blog.csdn.net/ccgshigao
部落格園:https://www.cnblogs.com/qa-freeroad/
51cto:https://blog.51cto.com/14900374
微信公衆号:測試生财(定期分享獨家内容和資源)
![]()
kuiper規則數上限測試的突發問題