リクエストのレイテンシを最小限に抑えるためにウォームアップリクエストに取り組んでいます: https ://developers.google.com/appengine/docs/java/config/appconfig#Warmup_Requests
その初期化中に、私は以下を実行します。
PersistenceManager pm = PMF.get().getPersistenceManager();
..しかし、ログから、クラスのメタデータが保存されているすべての.jdoファイルを解析しているわけではないことがわかります。これらは、この関数を初めて「getObjectById」と呼んだときにのみ解析されます(たとえば)。
最初のgetObjectByIdがPersistenceManagerにヒットしたときに完全に準備するために、datanucleusにすべてのメタデータを完全に読み取るように強制することは可能ですか?
ありがとう、ミケーレ
================================================== ============================更新:このpersistence.xmlファイルを試してみました:
<persistence-unit name="my-transaction">
<mapping-file><path-to-first-jdo-file></mapping-file>
<mapping-file><path-to-second-jdo-file></mapping-file>
<mapping-file><path-to-third-jdo-file></mapping-file>
<properties>
<property name="datanucleus.NontransactionalRead" value="true"/>
<property name="datanucleus.NontransactionalWrite" value="true"/>
<property name="datanucleus.ConnectionURL" value="appengine"/>
</properties>
</persistence-unit>
これはjdoconfig.xmlに関連付けられています:
<persistence-manager-factory name="my-transaction">
<property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory" />
<property name="javax.jdo.option.ConnectionURL" value="appengine" />
<property name="javax.jdo.option.NontransactionalRead" value="true" />
<property name="javax.jdo.option.NontransactionalWrite" value="true" />
<property name="javax.jdo.option.RetainValues" value="true" />
<property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true" />
<property name="datanucleus.appengine.allowMultipleRelationsOfSameType" value="true" />
<property name="datanucleus.appengine.datastoreReadConsistency" value="STRONG" />
<property name="datanucleus.appengine.ignorableMetaDataBehavior" value="ERROR" />
<property name="javax.jdo.option.Multithreaded" value="true"/>
<property name="javax.jdo.option.Optimistic" value="false" />
</persistence-manager-factory>
..しかし、私はログに以前の行動を見続けています。リクエストの読み込み中:
org.datanucleus.store.types.TypeManager addJavaType: Adding support for Java type <class>
..そして、クラスマッピング(たとえばgetObjectById)を本当に必要とする最初のリクエスト中:
org.datanucleus.metadata.xml.MetaDataParser parseMetaDataStream: Parsing MetaData file <class>.jdo
したがって、オブジェクトを取得する最初のリクエストは、XMLファイルを解析する必要があるため、次のリクエストよりも長くなります。どうしたの?
datanucleus1.1.5を使用しています
ありがとうございました