Qu'est-ce qui pourrait provoquer un «ralenti dans la transaction» dans un process pentaho pdi?

Je cours un process ETL à l'aide de cron tous les jours sur mon server toutes les 2 heures. Le process ETL remplit une database de reporting qui exécute Greenplum. J'ai remarqué que le process ETL serait normalement bloqué et que «ralenti dans les transactions» est habituellement celui qui le bloque. Pour ce genre de process, comment puis-je étudier les types de services dont il est issu? Je devine mais je ne suis pas vraiment sûr, car lorsque je cours "sudo /etc/init.d/apache2 gracieux", il supprime généralement les transactions Idle.

Je lance le process ETL sur un server Ubuntu à l'aide de Sun Java. J'apprécierais certaines techniques de debugging ou des solutions pour améliorer le process.

One Solution collect form web for “Qu'est-ce qui pourrait provoquer un «ralenti dans la transaction» dans un process pentaho pdi?”

"Idle in Transaction" signifie qu'une transaction a été démarrée sur une connection à la database et n'est pas terminée et qu'il n'y a plus de requêtes en cours d'exécution.

Dans la list de process du server de database (par exemple: ps -ef | grep "idle in" ), vous findez la connection qui se trouve dans cet état. Cela montrera quelque chose comme:

postgres 15268 12917 0 22:36 ? 00:00:03 postgres: user user xxxx(59830) idle in transaction

Le (59830) est le port de la machine xxxx .

Sur la machine xxxx , vous pouvez ensuite exécuter ce qui suit pour déterminer quel process a établi cette connection à la database:

netstat -np | grep 59830

Cela vous donnera quelque chose comme:

tcp6 0 0 xxxx:59830 dbserver:5432 ESTABLISHED 25254/java

(ou Apache, ou quel que soit le process). Dans cet exemple, 25254 est le PID du process.

Donc, cela répond à votre question dans le corps de votre publication.

Pour bien gérer, c'est un sujet plus compliqué. Pourquoi cette connection commence-t-elle une transaction et ne l'achève pas = mauvais encoding. Résolution: code correctement.

Remarque:

Pentaho PDI a une mauvaise habitude de laisser les transactions au ralenti pendant une longue période. Disons que vous avez une étape dans PDI qui met à jour certaines lignes. Ça va:

input step --> filter step --> update step

Et disons que vous définissez le lot de validation à 100 sur l' update step . Vous avez dit, 75 lignes à travers l'étape de mise à jour et l' input step est encore en train de tirer sur les lignes et les lignes de filtrage des filter step filtrage, mais en raison de la condition, rien ne passe à l' update step à update step pendant un certain time, car aucune ligne ne correspond à vos critères dans l' filter step du filter step . Alors, qu'avez-vous? Une connection de database idle in transaction (75 lignes mises à jour mais non engagées).

Donc, tout va bien, sauf qu'il est ennuyeux pour le DBA qui reçoit des alertes sur cette longue transaction.

Mais maintenant, disons que vous avez une autre étape qui ramifie l' filter step du filter step et met à jour la même table, mais différemment, et d'une manière ou d'une autre, un logging fait partie des 75 lignes mises à jour (mais pas engagées) et que l' update step 2 de mise à jour doit maintenant mettre à jour cette rangée. Ce qui se produit? Un arrêt. update step 2 mise à jour ne peut pas mettre à jour la ligne jusqu'à ce que l' update step à update step ait engagé le lot.

Ne disant pas que c'est ce que vous ressentez, car vous semblez avoir découvert, mais pas confirmé, que votre transaction de blocage fonctionne sous Apache et non sur PDI. Mais ce qui précède est une description d'un problème qui peut survenir pour illustrer ce qui se passe généralement.

  • Octroyer l'access au réseau PostgreSQL 9
  • Est-il possible de mettre à niveau Postgres 8.3.3 avec les bases de données existantes vers 8.4.2 (installé Windows Vista)?
  • Comment mettre à niveau Postgresql 8.3.x à 8.4.x sans time d'arrêt?
  • PostgreSQL sous Mac OSX Lion. Passer de l'user erroné?
  • Où Postgres enregistre-t-il datatables sur Ubuntu?
  • Pourquoi Postgres est-il assis 95% au repos, sans E / S de file?
  • Native Postgresql 9.2 Streaming Replication
  • Hôte de database PostgreSQL très random
  • compression pg_dump; Côté server ou client
  • Comment voir les connections actives et "activité actuelle" dans PostgreSQL 8.4
  • PostgreSQL n'a pas de nom de service sur CentOS
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.