【BeetleX重构】TLS和多数据类型性能测试
内容提要
本文主要针对HTTPS和不同序列化组件响应体中的性能进行测试。测试结果显示开启TLS会有30%-40%的性能损耗。在响应对象测试中,Google.Protobuf.net组件表现最优,System.Text.Json也是不错的选择。作者计划更新techempower上的测试代码以验证BeetleX重构的效果。
延伸解读
TLS性能损耗的实际影响
测试显示开启TLS后性能损耗在30%-40%之间,这一数据基于纯网络压力测试环境。在实际应用中,如果业务逻辑涉及大量数据库IO或复杂运算,网络通讯的占比相对较低,TLS带来的性能损耗可能并不显著。因此,是否启用TLS应结合具体应用场景权衡安全与性能。
序列化组件选型建议
在响应对象测试中,Google.Protobuf.net表现最优,兼顾效率与带宽;System.Text.Json在小对象交互场景下也是不错的选择,且协议可见、使用方便。需要注意的是,Protobuf.Net在高并发下存在严重性能问题,应避免使用。选型时需根据数据规模、并发量和开发便利性综合考虑。
测试环境与后续计划
本次测试使用A家云32核服务器,压测端为同配置Ubuntu 18,采用wrk工具。作者计划更新techempower上的测试代码,以更客观地验证BeetleX重构效果,因为当前测试硬件资源充裕,且techempower排名已长期未更新。这有助于在更标准化的基准下评估框架性能。
Q&A
开启TLS对性能的影响有多大?
开启TLS会导致30%-40%的性能损耗。
在响应对象测试中哪个组件表现最好?
Google.Protobuf.net组件表现最佳,System.Text.Json也是不错的选择。
测试中使用了什么工具和环境?
测试环境为A家云32核服务器,使用wrk工具进行压力测试。
Protobuf.Net在高并发下有什么问题?
Protobuf.Net在多线程高并发下存在严重性能问题,建议使用Google.Protobuf.net。
实际应用中网络通讯的损耗重要吗?
在实际应用中,网络通讯的损耗可能不太重要,因为数据库IO和运算逻辑占比更高。
后续有什么计划来验证BeetleX的效果?
后续计划更新techempower上的测试代码以验证BeetleX重构的效果。