7

私の ZEO ワーカーを見ると、かなり多くのことがわかります。

2013-10-18T11:59:54 INFO ZPublisher.Conflict ConflictError at
/VirtualHostBase/http/www.domain.com:80/Plone/VirtualHostRoot/:
database conflict error (oid 0x533cd5, class
persistent.mapping.PersistentMapping) (78 conflicts (0 unresolved)
since startup at Mon Oct 14 04:09:45 2013)

それらはログに記録されているINFOので、まったく害がないと想定する必要がありますか?

競合がある場合、ZODB への書き込みが多すぎるためだと思いますか?

4

2 に答える 2

9

PersistentMapping2 つの要求が同時にa を変更しようとしているため、実際に競合が発生します。これらのうちの 1 つは、コミットの再試行を強制されます。

これらのエントリを使用して、アプリケーションのボトルネックを特定します。おそらく、特定のマッピングを、BTree.OOBTreeキーと値のペアを別々の永続的なバケットに分散させることで競合を最小限に抑える に置き換えます。

トラフィック データとその特定のPersistentMapping内容、またはそれを使用したアプリケーションの動作がなければ、4 日間で 78 回の競合が多いか少ないか、別のコンテナーに切り替える価値があるかどうかを判断することは不可能です。

于 2013-10-18T12:29:10.447 に答える
6

競合エラー自体は有害ではありません。ZEO サーバーは、エラーを解決するために数回再試行します。しかし、これらはデータベース内の書き込み競合の兆候であり、多くの場合、現在の構成にボトルネックがあることを示しています。ユーザーはすぐにパフォーマンスの低下を訴えるでしょう。

おそらく分析を開始して、データベースへの書き込みが過剰または非常に非効率的なアドオン パッケージがあるかどうかを判断する必要があります。たとえば、トラフィック ロガーのように、ページが読み込まれるたびにデータベースに書き込もうとするコードが最悪の場合です。ZODB は、書き込みではなく読み取り用に最適化されているため、これらの操作を再設計して、データ ストアを ZODB 以外の場所に配置する必要があります。

問題がコンテンツの書き込みだけである場合は、カタログ インデックスとメタデータを減らすようにしてください。可能であれば、古い Archetypes スタイルのコンテンツを Dexterity コンテンツ タイプに置き換えます。器用さは、コンテンツ作成においてはるかに効率的です。

于 2013-10-18T12:29:45.253 に答える