Windows10下PyInstaller打包exe连接远程MariaDB性能远低于PyCharm运行
PyInstaller打包后远程连接MariaDB性能问题排查方向
- 先验证依赖版本一致性
在你的测试代码中加入以下语句,分别在PyCharm和打包后的exe环境运行,确认加载的MySQLdb版本、依赖路径完全一致,排除虚拟环境/全局环境依赖不匹配的问题:import MySQLdb, sys print("MySQLdb版本:", MySQLdb.__version__) print("MySQLdb加载路径:", MySQLdb.__file__) print("系统路径:", sys.path) - 排查域名解析/SSL握手耗时
远程连接才出现性能差异,优先排查网络层面的额外开销:- 把连接参数的
host值直接改为数据库IP,跳过域名解析步骤测试耗时,如果耗时降到和PyCharm一致,说明是打包环境的DNS解析存在额外开销,可进一步测试socket域名解析耗时定位原因 - 在
MySQLdb.connect参数中添加ssl_mode="DISABLED",关闭不必要的SSL握手尝试,部分环境下打包后的客户端会默认尝试SSL连接,握手失败后才回退到非SSL,会产生1-2秒的额外耗时
- 把连接参数的
- 排查Windows系统安全策略影响
未签名的PyInstaller打包程序经常会被Windows Defender、第三方安全软件拦截扫描,尤其是发起对外网络请求时会触发实时检测:- 临时关闭Windows Defender实时保护,或将打包后的exe所在目录加入 Defender排除项后重试
- 检查系统代理配置,确认PyCharm和打包后exe的网络链路一致,排除代理转发带来的额外耗时
- 排查PyInstaller打包配置问题
- 尝试在打包命令中添加
--no-binary mysqlclient参数,强制打包源码版本的依赖,避免预编译二进制库和系统环境不兼容 - 测试
--onedir(默认)和--onefile两种打包模式的耗时差异,--onefile模式每次运行需要动态解压依赖库,可能会拖慢动态链接库的加载速度
- 尝试在打包命令中添加
内容的提问来源于stack exchange,提问作者Meritor
相关产品推荐
相关产品推荐

