- PR -

【バグ?】SQLSEVER2005のセッション・インプロセス管理が怪しい

投稿者投稿内容
ハニワ祭り
大ベテラン
会議室デビュー日: 2005/11/15
投稿数: 115
投稿日時: 2008-04-29 13:27
SQLSEVER2005 SP2 を使用しているのですが、
先日、あるSELECT系のクエリがクエリタイムアウトで中断され、しかも発行元からは完全に切断したにもかかわらず(発行元マシンの接続プロセスは終了済、その後さらに再起動済み)、
該当セッションのインプロセスが残ったまま、ロックが開放されないという現象が発生しました。
利用状況モニタから確認すると「中断しました」という状態で、
強制終了も受け付けない状態になり。
そのままではデータ操作が出来ないため、やむなくサービスを再起動して復旧することができました。

この件については重大なバグだと思いますが、ご存知の方おりますでしょうか?
(6.5の頃は同様なバグがあったようですが、いまだに改善されていないのか…)
SQLサーバーが応答しなくなってしまい再起動したら直ったというような話
はときどき耳にしますが、これが原因の一つではないかと疑っています。

また質問ですが、
実態としてSQLSERVERのプロセス管理がいい加減なため、
定期的なサービス或いはマシンの再起動は必須なものなのでしょうか?
みなさんはどのように運用されておりますか?



[ メッセージ編集済み 編集者: ハニワ祭り 編集日時 2008-04-29 13:33 ]
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2008-04-29 18:33
SQLServer2005のクエリエンジンは確かにしょぼいですね。
私も共通表式を利用したクエリで、たまにずっとCPU100%状態になってしまうバグに直面しました。マルチCPUで並列動作するプランになったときにおきていたようです。
並列動作にならないようにオプション変更したら動作は改善しました。

定期的なサービス或いはマシンの再起動をしても結局ロックされてしまうと、その時点からアプリは利用できなくなるので、逆に再起動すると原因究明できなくしまってしまうので私はお勧めしません。
一番のお勧めは、その障害原因をきちんと解析して、対処することかと思います。
でなければSQLServer2005を利用せず、ほかの内部仕様きちんと公開されているRDBMS(OracleやDB2)に変更されることをお勧めします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-04-29 22:18
これのこと? http://support.microsoft.com/kb/137983/ja
ハニワ祭り
大ベテラン
会議室デビュー日: 2005/11/15
投稿数: 115
投稿日時: 2008-04-30 21:47
引用:

Jittaさんの書き込み (2008-04-29 22:18) より:
これのこと? http://support.microsoft.com/kb/137983/ja




一見解決方法が書いてあるように錯覚しましたが、keep aliveのデフォルト値を
大幅に越えて接続が数日間続いていたり、インプロセスを強制終了することも
出来ないことから、KBの下記部分にしか該当しなさそうです。



「SQL Server の接続管理に問題がある可能性があります。
 この場合は、主要サポート プロバイダに問い合わせて、問題を解決してください。 」



「マイクロソフト」ではなく、「主要サポートプロバイダ」って…
なんかもう意図的に責任の所在をあいまいにしているようにしか見えません。
これのどこが技術情報なのやら。


引用:

Anthyhimeさんの書き込み (2008-04-29 18:33) より:
SQLServer2005のクエリエンジンは確かにしょぼいですね。
私も共通表式を利用したクエリで、たまにずっとCPU100%状態になってしまうバグに直面しました。マルチCPUで並列動作するプランになったときにおきていたようです。
並列動作にならないようにオプション変更したら動作は改善しました。



SQLSERVERでは並列クエリのバグはかなり多いようですが、
複数CPUを積んでいる場合、並列クエリはオフにして運用するのが
一般的なのでしょうか?


[ メッセージ編集済み 編集者: ハニワ祭り 編集日時 2008-04-30 21:55 ]
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2008-05-01 04:40
引用:
SQLSERVERでは並列クエリのバグはかなり多いようですが、
複数CPUを積んでいる場合、並列クエリはオフにして運用するのが
一般的なのでしょうか?


一般的かはわからないですが、怖いので並列クエリのCPUは1つだけに設定してました。
共通表式を使わなければ起きない可能性は高いと思います。新機能なので・・・。

あと接続方式をTCPIPに変えてはどうでしょうか(すでに変更済みかもしれませんが)。
KB見るとTCPIPの接続管理はOSがやるようなので、設定しだいでは改善する可能性があるのではないでしょうか。
ハニワ祭り
大ベテラン
会議室デビュー日: 2005/11/15
投稿数: 115
投稿日時: 2008-05-01 19:30
引用:

あと接続方式をTCPIPに変えてはどうでしょうか(すでに変更済みかもしれませんが)。
KB見るとTCPIPの接続管理はOSがやるようなので、設定しだいでは改善する可能性があるのではないでしょうか。



接続方式は最初からTCPIPです。
つまり、SQLSERVER側だけでなくOS側にも問題がある可能性が高いわけですね。

なんか自分がかかわっているシステムトラブルの3割方は
マイクロソフト製品のバグに起因している気がします…
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-05-02 09:18
そう思うなら、サポート契約してサポート受ければ?
マイクロソフト製品のバグなら、費用はかからないよ。
ぴんふ
ベテラン
会議室デビュー日: 2006/07/13
投稿数: 80
投稿日時: 2008-05-02 13:09
こんにちは。ぴんふです。

最終的にはシステムを使うユーザーが納得または満足すればいいわけだから、
例えバグであろうとも問題を回避できるなんらかの方法(運用面も含めて)
をユーザーに提示して了承を得られればいいのでは?
それがSE、PGの仕事だと私は思います。

良い例ではないかもしれませんが、
タクシーの運転手が「カーナビが故障しているのでお客さんの行きたい
ところへは行けません」とは言いませんよね?

ハニワ祭りさんが仕事としてソフトウェア開発をしていないのであれば私の意見は
無意味ですので無視してください。

スキルアップ/キャリアアップ(JOB@IT)