





























Afar · 2022 年 3 月 9 日 · 4734 次点击
这是一个创建于 1558 天前的主题,其中的信息可能已经有所发展或是发生改变。
使用场景: 车间内 142 台 PC ,通过配置 ODBC ,执行插入数据到局域网内服务器上的 SQLServer 数据库,频率为每 10 秒一次。 每台 PC 对应服务器中的一个数据库,共 142 个数据库,每个库有 18 张表,单表最大字段 780 个。
车间 PC 操作系统为 Win7/XP,内存为 4G 。 服务器配置为 Xeon Gold 5218 ,内存 128G ,SQLServer 版本为 2019 社区版,默认安装默认配置。
异常现象: 偶尔会出现数据插入异常,PC 端报数据库写表失败。
可能问题:
麻烦各位大佬,给些建议或者指导,非常感谢。
4 sss007 2022 年 3 月 9 日1.网络问题可能性不大,排查方法就是找一台失败的电脑连续 ping ,到出现失败查看是否丢包 |
5 paradoxs 2022 年 3 月 9 日发到 MQ 上,慢慢拉 |
6 c6h6benzene 2022 年 3 月 9 日 via iPhoneService Broker 丢队列里慢慢消费? |
8 Afar 2022 年 3 月 9 日@paradoxs @c6h6benzene 如果能本地数据库转 MQ ,推送到服务器端的 Broker 上最好了。但是这样又需要去每台机器上配置部署,同时增加了 PC 端负担。 |
9 Itoktsnhc 2022 年 3 月 9 日架构不调整的话首先该做的是对 SQL Server 以及所在机器的状态做一个监控,结合客户端报错的时间看指标,比如 CPU 情况,内存情况,网络流量情况,数据库连接数,是否存在死锁这些 |
10 mingl0280 2022 年 3 月 9 日 via Android2 和 3 完全不可能,高度怀疑是 ODBC 插入代码有问题。 |
11 PopRain 2022 年 3 月 9 日社区版你就算有 128G 内存,它也只会用 1G 内存(数据库文件 MAX 10G)。。。。你建这么多数据库,本身就耗费缓存内存,缓存要不停交换到硬盘肯定影响插入效率,如果可以改,最好不要超过 10 个数据库 另外,可以先装个开发版试试(免费 180 天),如果没有问题,预算有限可以买个 WEB 版(max 64G),话说这么“豪华”的服务器都买了,舍不得买个标准版的数据库。。。。 如果这样,为什么不用 postgresql 呢? |
12 PopRain 2022 年 3 月 9 日补充一下,如果客户端可以配置连接端口的话,是不是可以测试一下多安装几个实例,监听不同端口,这个不知道微软是否限制为共享 1G 内存,还是各自 1G |
14 Afar 2022 年 3 月 9 日PC 客户端是 WIN7/XP ,只能通过 ODBC 到服务器数据库,服务器端是 Windows Server 2016 ,如何实现多实例呢? VMware 么? |
15 kiracyan 2022 年 3 月 9 日你的社区版确定没阉割吗? |
16 Afar 2022 年 3 月 9 日@kiracyan 我也看不来有没有阉割,这是 select @@version 查询出来的 Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) Sep 24 2019 13:48:23 Copyright (C) 2019 Microsoft Corporation Express Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 16299: ) |
17 adoal 2022 年 3 月 9 日 via iPhone“数据插入异常”时的具体表现是什么,服务器返回的错误码?客户端抛出的异常?日志里的记录?如果什么都没有,那不好猜。 |
18 PrinceofInj 2022 年 3 月 9 日@Afar 直接新安装一个数据库,选评估版就行了。企业版的功能,180 天评估器,足够排查了吧。继续运行安装程序,选命名实例就是多实例了。 |
19 netnr 2022 年 3 月 9 日 via Android判决大概率是版本问题,先换一个开发版观察是否依然出现问题,EE 版本限性能和大小 |
21 PopRain 2022 年 3 月 9 日@Afar SQL SERVER express 最大只能用 1G 内存,你还开了这么多 database , 你可以安装一个开发版测试一下,我觉得肯定有改善,你这个数据量对 SQL server 来说不算什么。 |
22 qile1 2022 年 3 月 10 日 via Android把服务器虚拟化成多个系统,每个系统安装 sql server |
23 sss007 2022 年 3 月 10 日如果超市 SQL Server Profiler 应该是监测不到的,但是你可以看成功的执行时间是多久,如果排队会出现很多执行时间很长的 sql ,而且目前看来很明确是版本问题了。sqlserver 缓存池跟用户量和数据库大小,运行时间都有直接联系,缓存池都是在内存里,楼上说了限制 1g 我不知道准确不,没仔细看,但是就算不是也不会超过 4g ,就你这个使用情况内存是不够的 |
24 PopRain 2022 年 3 月 22 日楼主最后把结果告诉大家一下 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。