Od jakiegoś czasu próbuję rozwiązać kwestię integracji opartej o pliki xml oraz bazę danych MySQL.
Odkąd cała integracja została napisana wszystko działało elegancko, aż do kilku dni wstecz. Z tego co wiem, to po stronie serwera ani bazy kompletnie nic się nie zmieniło.
Przy odpaleniu pliku php przez CRON (lub ręcznie) zawsze wszystkie zapytania zawieszają się ze "statusem" (?) **Sending data ** oraz Waiting for table level lock
Jak wygląda integracja:
Na serwer wpadają pliki xml.
Plik parsuje ten dokument i wykonuje operację na bazie - albo insert, albo update (jeśli plik istnieje ale został zaktualizowany) albo delete.
Ogólnie CRON wywołuje się co 10min, a pliki są wrzucane średnio co 3-5min (ważą max max 1MB)
Przy odpaleniu integracji, w bazie pokazuje się nawet do 60 procesów wywołanych przez integracje wszystkie ze statusem Sending data lub Waiting for table level lock
Co ciekawe pozostają one tak zawieszone do czasu aż ich ktoś nie ubije... Dodam, że w tym czasie serwis, który działa w oparciu o te integracje nie działa (pewnie wyczerpana ilość socketów połączenia?), natomiast inny serwis, który również bazuje na tym samy serwerze bazodanowym ale innej bazie działa bez zarzutów i problemów żadnych nie ma.
Miał ktoś podobną sytuację? Co może być przyczyną, że procesy od razu uzyskują Waiting for table level lock?
Dodam jeszcze, że testowo odpalałem integrację z jednym plikiem xml, w którym były 3 wpisy (czyli 3 produkty) i na tych 3 również wszystko się wieszało.
// całość działa w oparciu o bazę, w której pojedyncza tabela nie posiada więcej niż 1mln rekordów - nie wiem czy to istotne ale piszę:)
Z góry dziękuję za ewentualne sugestie.