PandasWS/Pandas

RELOAD DB的时候,会卡顿几秒

CoderSiu opened this issue · 6 comments

缺陷描述

测试如果修改过ITEMDB,然后进行reloaditemdb,会卡顿2 ~ 3 秒. 如果是正式服进行reload会体验不好.

重现步骤

1.修改itemdb
2.reloaditemdb
3.卡顿

预期结果

No response

操作系统

Windows

工作模式

全部 (Both)

熊猫模拟器版本号

v1.1.11 dev

适配的客户端版本

20200902

是否为原生缺陷

是的, 问题依旧

代码提交散列

No response

备注

No response

如果你使用過Pandas其他的端會發現,如果有玩家或自行測試時若reloaditem期間有運行物品使用或點擊NPC功能(例如進入迴圈)伺服器會有突發崩潰斷線問題(隨機的)。

Pandas雖再修改過item_db後執行線上@reloaditemdb比較長的時間,但是在reload期間斷開的部分確實優化的非常好,基本上不異動item_db的情況下 db 都會生成 cache 檔案來進行疾風緩存,個人在實際操作經驗上還是挺好。

個人猜測:
或許是為了讓檔案的載入更加嚴謹所以在線上異動檔案後加載時間較長,但穩定性高的情況下尚可接受。

建議:
如果在線上本身有玩家存在且大量情形之下仍然不建議執行線上reload來降低伺服器可能存在崩潰斷線的風險。

正如 @ssboyz 所说,正式开服从原则上其实不推荐进行 reload 操作;
具体原因未来我会写一篇文章剖析。

尽管如此,我们特别能够理解各位世界管理员们为什么需要执行 reload 操作,
因此我们将在后续优化此问题,减轻 reload 对玩家的影响。

对于掉线的情况,很多时候是使用盾机和负载均衡、代理转发导致的,
它们在没有流量的情况下断开链接的超时时间,低于一次 reload 可能导致的流量空窗时间。

实际上如果进行正确的设置,尽管 reload 期间会卡住,但应该不至于掉线。

订正:如果是 debug 模式的话,时间太长了,确实会掉线。和盾机负载均衡和代理转发无关。

熊猫专业版已经缓解此问题,熊猫原始的 db 数据进行修改之后,使用 reloaditemdb 从原先大约需要 12 秒下降到 3 秒左右

参考Bra可以推出针对特定Id、Id1~Id2的reload
另外reloaditemdb可以使用独立的线程去reload,reload成功后写入cache时由主线程去操作

参考Bra可以推出针对特定Id、Id1~Id2的reload

另外reloaditemdb可以使用独立的线程去reload,reload成功后写入cache时由主线程去操作

安排!