2011-07-12 5 views
3

アクティビティ並行処理に問題があります。 ウィケットスプリングアプリケーションアクティビティワークフローエンジンがあります。同時ユーザーなしで正常に動作しますが、jmeterパフォーマンステスト activiti はデッドロックを独自のテーブルに作成します。例:ACT_RU_JOB、ACT_RU_EXECUTION、ACT_RU_VARIABLE。私はこの問題(Activiti Forum)に関するactivitiフォーラムに関するトピックを見つけました。キューを使用してアクティビティプロセスを開始することをお勧めします。デッドロックがまだ発生しているため、この解決策では問題は解決しませんでした。私はいくつかの設定とスタックトレースを提供します。すべての答えは私のために役立つことができます。助けてくれてありがとう!JMeterのパフォーマンステストでActivitiデッドロックが発生する

私activiti設定:

<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> 
     <property name="databaseType" value="mssql" /> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="transactionManager" ref="transactionManagerLugy" /> 
     <property name="databaseSchemaUpdate" value="true" /> 
     <property name="jobExecutorActivate" value="true" /> 
     <property name="deploymentResources" value="classpath*:/diagrams/idm/*.bpmn20.xml" /> 
     <property name="history" value="none"/>  
     <property name="jdbcMaxActiveConnections" value="1000"/> 
     <property name="jdbcMaxIdleConnections" value="10"/> 
     <property name="jdbcMaxWaitTime" value="50000"/> 
    </bean> 


    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"> 
     <property name="processEngineConfiguration" ref="processEngineConfiguration" /> 
    </bean> 

スタックトレース:

### Error querying database. Cause: org.hibernate.exception.LockAcquisitionException: Transaction (Process ID 67) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. 
### The error may involve org.activiti.engine.impl.persistence.entity.VariableInstanceEntity.selectVariablesByExecutionId-Inline 
### The error occurred while setting parameters 
### Cause: org.hibernate.exception.LockAcquisitionException: Transaction (Process ID 67) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. 
    at org.springframework.jms.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:471) 
    at org.springframework.jms.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:355) 
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:535) 
    at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:495) 
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:467) 
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:325) 
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:263) 
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1058) 
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1050) 
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:947) 
    at java.lang.Thread.run(Thread.java:662) 

答えて

1

私はactiviti図からタイマーのすべてを削除し、デッドロックが姿を消しています。なぜか分かりませんが、それはうまくいきます。