阅读:1359回复:12
一个非常严重的问题,100分求助
虚拟磁盘读写一个大文件时 ,因为读写操作中我加入了额外的操作,(不加这些额外的操作没问题,额外的操作只是简单的把数据保存到数据库,要对你系统有影响也只是时间延迟了)经常会使系统挂起,我怀疑是超时导致RESETBUS,SCSIMINIPORT中的超时是怎么回事,我怎样
控制它呢? |
|
|
驱动老牛
|
沙发#
发布于:2005-04-10 09:55
虚拟磁盘读写一个大文件时 ,因为读写操作中我加入了额外的操作,(不加这些额外的操作没问题,额外的操作只是简单的把数据保存到数据库,要对你系统有影响也只是时间延迟了)经常会使系统挂起,我怀疑是超时导致RESETBUS,SCSIMINIPORT中的超时是怎么回事,我怎样 是单机环境吗? 有可能是在单机条件下造成死锁的原因 |
|
板凳#
发布于:2005-04-10 12:16
是单机环境 ,这与单机环境有关系吗。我测试了一下,感觉主要问题在于 超时了,但是格式化的时候 系统也写很大的数据,不知道怎么回事,格式化没啥问题。
|
|
|
地板#
发布于:2005-04-10 15:55
虚拟磁盘读写一个大文件时 ,因为读写操作中我加入了额外的操作,(不加这些额外的操作没问题,额外的操作只是简单的把数据保存到数据库,要对你系统有影响也只是时间延迟了)经常会使系统挂起,我怀疑是超时导致RESETBUS,SCSIMINIPORT中的超时是怎么回事,我怎样 那就将操作队列起来,慢慢处理 :D :D :D |
|
|
地下室#
发布于:2005-04-11 09:09
虚拟磁盘读写一个大文件时 ,因为读写操作中我加入了额外的操作,(不加这些额外的操作没问题,额外的操作只是简单的把数据保存到数据库,要对你系统有影响也只是时间延迟了)经常会使系统挂起,我怀疑是超时导致RESETBUS,SCSIMINIPORT中的超时是怎么回事,我怎样 说得不太详细,请将保存数据库的代码附上 |
|
|
驱动老牛
|
5楼#
发布于:2005-04-11 12:45
是单机环境 ,这与单机环境有关系吗。我测试了一下,感觉主要问题在于 超时了,但是格式化的时候 系统也写很大的数据,不知道怎么回事,格式化没啥问题。 怎么处理都一样,单机环境都会死锁,包括在数据库中 换成双机环境试试,如果还不行,那还存在其他问题。 |
|
6楼#
发布于:2005-04-11 14:14
双机也不行,我感觉还是超时的问题,因为现在我用的TDICLIENT每次发送512byte,最多可以一次发送3072,大文件的一次请求写数据一般为56*512,不能够一次把磁盘请求的数据全部发送到数据库,这样数据比较大的时候可能延迟较大。
|
|
|
7楼#
发布于:2005-04-11 16:12
送zhangshengyu100分,感谢zhangshengyu兄弟长期以来的帮助。
另外问一下, 磁盘发出的写请求的位置参数是一个LARGE_INTEGER pos变量,我把pos.QuadPart输出了怎么都很大啊 比如像168650240这样, 她是以字节为单位吗。 |
|
|
驱动老牛
|
8楼#
发布于:2005-04-11 18:22
双机也不行,我感觉还是超时的问题,因为现在我用的TDICLIENT每次发送512byte,最多可以一次发送3072,大文件的一次请求写数据一般为56*512,不能够一次把磁盘请求的数据全部发送到数据库,这样数据比较大的时候可能延迟较大。 发不了这么大没关系呀,可以分几次发嘛。 |
|
驱动老牛
|
9楼#
发布于:2005-04-11 18:24
送zhangshengyu100分,感谢zhangshengyu兄弟长期以来的帮助。 都是以字节的 你用了TDI 那关键是可能是数据问题造成TDI出现了问题,最好是进行单元测试,把TDI搞定了,再挪到驱动中,否则以后出现问题比较麻烦。 |
|
10楼#
发布于:2005-04-12 16:48
读一个文件的时候,读取文件的开始位置这个参数当文件比较大时,是不是很大阿。除了按照位置组织,有没有更好的文件组织方式。
|
|
|
11楼#
发布于:2005-04-13 09:44
[quote]虚拟磁盘读写一个大文件时 ,因为读写操作中我加入了额外的操作,(不加这些额外的操作没问题,额外的操作只是简单的把数据保存到数据库,要对你系统有影响也只是时间延迟了)经常会使系统挂起,我怀疑是超时导致RESETBUS,SCSIMINIPORT中的超时是怎么回事,我怎样 那就将操作队列起来,慢慢处理 :D :D :D [/quote] 额外的操作只是简单的把数据保存到数据库 建一个队列,内核只把数据考到队列,界面负责放到database. |
|
|
12楼#
发布于:2005-04-13 10:34
你是说建一个内核对列,然后把队列的数据保存到数据库。
|
|
|