|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2020/3/20 18:50:50 |
标题: |
uniDac连接MySql,执行次数多了,出错,内存错误,程序崩溃 |
浏览:1065 |
|
加入我的收藏 |
楼主: |
服务器是一个线程池,接收到请求,放到队列里,线程池分配线程去处理,线程中执行数据库操作,一个线程一个数据库连接,用的uniDac,发现执行次数多了就会崩溃报错。去掉数据库操作部分就没问题。请问有什么好的方法?
----------------------------------------------
- |
作者: |
|
2020/3/20 18:52:47 |
1楼: |
MySql数据库在内网,用的UniDac直接连接它
----------------------------------------------
-
|
作者: |
ivvn (奔腾的心) |
★☆☆☆☆ |
-
|
普通会员 |
|
2020/3/20 19:48:36 |
2楼: |
代码丢上来
----------------------------------------------
-
|
作者: |
|
2020/3/20 21:16:16 |
3楼: |
我相信 绝不是 UNIDAC 本身 的 问题。
----------------------------------------------
-
|
作者: |
|
2020/3/21 1:06:09 |
4楼: |
7*24的程序最重要的就是要会管理资源。你这种长时间崩溃的情况就是资源管理出了问题。
----------------------------------------------
--
|
作者: |
|
2020/3/21 10:28:02 |
5楼: |
昨天调试模式下看到过一次sysGetMem出错,队列任务对象频繁创建释放是不是有问题,用的是消息中间件,接收到消息,转成一个自己的对象,放到线程池里的队列里。
----------------------------------------------
-
|
作者: |
|
2020/3/21 10:36:50 |
6楼: |
现在是自己测试,每隔一分钟,1000个并发过去。
----------------------------------------------
-
|
作者: |
|
2020/3/23 22:41:39 |
7楼: |
找到问题了,执行uniDac查询的时候,结果集要申请内存TMySqlResultSet.Create这里报错,消息中间件接口每个请求也要申请内存New(Message)这里也会报错,报的是申请到的内存是只读的,停在SysGetMem那里,这两个操作都是在线程里调用,去掉uniDac查询就正常,它们两个好像会互相冲突。New(Message)操作准备加个对象池,不每次都申请
----------------------------------------------
-
|
|