研究 termux 時遇到的詭異的問題

2021-10-01 07:41:14 字數 1029 閱讀 4049

手上有個舊的android 手機 mi 5 plus閒置了兩年,效能還相當不錯的,就是螢幕被我摔花了,最近總想著讓他發揮點價值。

突然想到能不能用它當小型linux伺服器放在家裡,用內網穿透工具 frp 將他的sshd 服務埠**的公網的伺服器上, 這樣在外面就可以通過這台公網伺服器連線上這個 linux 伺服器 。

一番網路搜尋研究 發現兩種方案:

果斷選擇了termux, 不想 root. 順利安裝了 python, gcc, openssh 等軟體 。。。通過frp的客戶端frpc連線上公網, 從公司 ssh連線上了這個 5plus ,爽歪歪。

但是-- 有個奇怪的問題, 每隔一分多鍾會斷開。 各種 ssh, frp客戶端日誌和伺服器日誌檢查,發現是 frp客戶端每隔 1分多鍾會斷開。

這個問題困擾了我幾個星期,一開始還懷疑是運營商 每幾分鐘重置鏈結。但是我電腦上的 frpc 卻沒事。。。

後來分析frp的golang原始碼,開啟詳細日誌 發現, 伺服器上超時時間是90秒,客戶端心跳上報時間是30秒, 而termux 上執行的frpc,伺服器上顯示的是超時,超時後會斷開客戶端,然後frp客戶端會馬上重連, 這個時間設定無論如何都不應該超時呀。 自己編譯一邊, 同樣**編譯的frp客戶端程式在mac電腦上執行卻沒問題,日誌中看到每隔30秒會發布心跳。但是這個心跳日誌在termux上沒有。很是困惑呀, 仔細閱讀**。

於是開始懷疑是**中的心跳定時器在電腦上和在手機上的時間不一樣。 於是寫了個最簡單的go程式,定時每隔1秒輸出包含時間資訊到日誌。在電腦上輸出正常。 放到termux上去執行,發現了非常詭異的結果,輸出的時間資訊,並不是每秒輸出,幾乎是每隔6到 7秒中,但是我到定時器是每隔1秒啊!! wfk, 這是什麼情況,太不可思議了

就這個定時器不准到問題再次去google 了一番,發現是android深度睡眠導致的,為了減少耗電,後台程式的執行很慢,連timer定時器也不例外。

在手機上termux裡面執行termux-wake-lock命令 ,手機會彈出是否執行後台執行的,選擇允許就好了,

然後在去 termux再次frp客戶端,哈哈,終於不會頻繁掉線了!不容易呀

開發中遇到的詭異的bug

今天我們伺服器組遇到個問題 我們的服務是從kafka裡面取出資料,然後把offset儲存到ssdb中,每個topic和partition都對應ssdb中不同的key,服務啟動之後,每次kafka資料更新我們這邊收到訊息,然後儲存之後就發現ssdb的值偶爾是 2,這就奇怪了,最開始我們是在 中列印儲存...

使用ToluaFrameWork時遇到的一些問題

最近的專案在使用tolua框架熱更新。在做初期準備時,拿著github上的toluaframework進行學習和修改,在匯出安卓包時,遇到了一些問題,因此記錄了一下。1.plugins目錄下的x86和x86 64資料夾中的tolua要設定成不同的平台,android libs的armeabi v7a...

配置hbase zookeeper時遇到的問題

今天在配置hbase zookeeper時遇到了問題,使用list和create語句時沒有問題,但是使用put語句一直報錯 put students stud003 info name tom 2019 03 09 13 39 08,238 error main client.asyncproces...