南京网站制作建设建设银行扬中网站
web/
2025/10/6 7:29:49/
文章来源:
南京网站制作建设,建设银行扬中网站,网站建设属于什么职能,php网站开发技术优点在高并发查询、查询需要涉及很多个分区的情况下#xff0c;低版本的 glibc#xff08;低于2.23#xff09;会严重影响查询性能。需要升级 glibc 解决该问题优化性能。我们撰写了本文#xff0c;通过 patchelf 工具修改可执行文件和动态库的 rpath#xff0c;达到无需升级系…在高并发查询、查询需要涉及很多个分区的情况下低版本的 glibc低于2.23会严重影响查询性能。需要升级 glibc 解决该问题优化性能。我们撰写了本文通过 patchelf 工具修改可执行文件和动态库的 rpath达到无需升级系统便可以使用高版本 glibc 的目的。
1 概述
在高并发查询、查询需要涉及很多个分区的情况下需要频繁读取磁盘文件而旧版 glibc低于2.23的 fseek 函数性能低下导致查询任务堆积CPU 利用率却不高。需要升级 glibc 解决该问题。由于系统 glibc 通常和系统版本绑定所以升级系统 glibc 需要升级系统。但是升级系统步骤繁琐故我们撰写了本文通过 patchelf 工具修改可执行文件和动态库的 rpath在动态链接时优先链接的高版本 glibc。从而无需升级系统便可以使用高版本 glibc。
2 环境配置与数据模拟
2.1 硬件配置
测试总共使用四台配置相同的服务器分别命名为 P1、P2、P3、P4具体硬件配置如表所示。
处理器核数内存操作系统硬盘网络Intel(R) Xeon(R) Gold 5320 CPU 2.20GHz128754 GBCentOS Linux release 7.9SSD万兆局域网
2.2 集群配置
以下测试中使用的 DolphinDB Server 版本为 2.00.9.3。
基于四台服务器搭建双副本高可用集群假设四台服务器名称分别为 P1、P2、P3、P4P1 、P2、P3各部署一个控制节点、一个代理节点、一个数据节点P4 部署一个代理节点、一个数据节点。
主要配置如下表
配置项值maxMemSize480GBworkerNum128个TSDBCacheEngineSize100GB
2.3 模拟数据
2.3.1 生成模拟数据
模拟数据为物联网测点数据有 4 个字段分别是 id、time、v、q一天 28.8 亿条数据。数据库按照日期按天、idHASH 128分区。每个分区约 2250 万条记录。具体脚本见附件。
2.3.2 模拟数据查询
我们模拟单个、20、40、60、100 个并发查询查询内容为 4 天 1000 个随机id的点查询理论上将包含 128x4个分区。具体脚本见附件。
3 升级 glibc
3.1 查看本机 DolphinDB 使用的 glibc 版本
执行以下命令
ldd dolphindb 找到 libc.so.6 的位置在终端执行
/lib64/libc.so.6
得到版本为如图2.17低于 2.23 3.2 下载或者编译高版本 glibc
3.2.1 下载
可自行下载对应系统高版本的 glibc 库和 libgcc 库后手工提取。或下载 DolphinDB 提供的压缩包glibc 版本 2.23Centos 7。注意可能存在兼容性问题。
glibc-2.23.tar.gz
3.2.2 编译
可以通过自行编译的方式解决高版本 glibc 的兼容性问题。
#下载glibc源代码
git clone https://sourceware.org/git/glibc.git
cd glibc
git checkout glibc-2.23
mkdir build
cd build
#具体路径需要自己选择不要不添加路径或者选择系统库的路径避免系统glibc被覆盖
../configure --prefix/home/thchen/glibc-2.23
# -j后面的数字要低于或者等于自己cpu的核数
make -j12
make install
#编译运行需要把系统的/lib64/libgcc_s.so.1 复制到/home/thchen/glibc-2.23/lib里
cp /lib64/libgcc_s.so.1 /home/thchen/glibc-2.23/lib
3.3 解压高版本 glibc 到自定义位置
注意事项
1不要解压到系统 lib64、根目录等路径覆盖系统 glibc。
2不要添加自定义 glibc 文件夹到 LD_LIBRARY_PATH 环境变量。
#当前位置为/home/thchen
tar -zxvf glibc-2.23.tar.gz
3.4 下载 patchelf
sudo yum install patchelf
3.5 文件备份
备份相关文件dolphindb libDolphinDB.solibgfortran.so.3libopenblas.so.0libquadmath.so.0libstdc.so.6libtcmalloc_minimal.so.4
#备份文件需要到dolphindb 可执行文件下的目录
cp dolphindb dolphindb.bak
cp libDolphinDB.so libDolphinDB.so.bak
cp libgfortran.so.3 libgfortran.so.3.bak
cp libopenblas.so.0 libopenblas.so.0.bak
cp libquadmath.so.0 libquadmath.so.0.bak
cp libstdc.so.6 libstdc.so.6.bak
cp libtcmalloc_minimal.so.4 libtcmalloc_minimal.so.4.bak
3.6 修改文件的 rpath 和 interpreter
1关闭 DolphinDB
2根据高版本 glibc 的路径修改以下文件的 rpathdolphindb libDolphinDB.solibgfortran.so.3libopenblas.so.0libquadmath.so.0libstdc.so.6libtcmalloc_minimal.so.4
#修改rpath具体路径要看高版本glibc的路径
patchelf --set-interpreter /home/thchen/glibc-2.23/lib/ld-linux-x86-64.so.2 \
--set-rpath ./:/home/thchen/glibc-2.23/lib64 dolphindb
patchelf --set-rpath ./:/home/thchen/glibc-2.23/lib libDolphinDB.so
patchelf --set-rpath ./:/home/thchen/glibc-2.23/lib libgfortran.so.3
patchelf --set-rpath ./:/home/thchen/glibc-2.23/lib libopenblas.so.0
patchelf --set-rpath ./:/home/thchen/glibc-2.23/lib libquadmath.so.0
patchelf --set-rpath ./:/home/thchen/glibc-2.23/lib libstdc.so.6
patchelf --set-rpath ./:/home/thchen/glibc-2.23/lib libtcmalloc_minimal.so.4
3.7 验证 glibc 库路径
使用 ldd dolphindb 命令验证当前 glibc 库的路径。当运行结果显示其路径为高版本 glibc 路径时说明前述修改成功。 4 性能测试与对比
通过在升级前和升级后运行 2.3.2 节的模拟查询我们得到了以下数据
查询方法查询用时(glibc 2.17)查询用时(glibc 2.34)加速比单查询3,241 ms2,007 ms1.6120并发查询33,346 ms15,313 ms2.1840并发查询85,144 ms24,672 ms3.4560并发查询134,065 ms28,793 ms4.66100并发查询224,902ms46,938 ms4.79
通过升级 glibcDolphinDB 前后查询加速比为 1.61-4.79 倍。在并发情况下性能提升更加明显。
5 小结
针对高并发查询当查询需要涉及多个分区时如果查询任务积压但 CPU 利用率不高可以先确定 glibc 的版本。如果 glibc 版本低于 2.23则可以按照本方案进行升级这可能会带来明显的性能提升。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87805.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!