Puncte:0

Fișierele Cronjob nu se închid și utilizarea CPU 100%.

drapel et

Rulez un fișier php la fiecare 10 secunde cu un cronjob. În timp ce sistemul mergea bine, am observat aseară că php folosea 100% din CPU și prăbușește sistemul.

Când am verificat cu ps aux, am văzut că fișierul meu cron avea zeci de fișiere cron în proces. Nici măcar nu a existat un motiv pentru asta când am verificat baza de date. Deci pagina mea php trebuia să revină goală și să se termine instantaneu.

Am cateva intrebari:

1- De ce poate fi cauzată această defecțiune în Cron?

2- Când creez un sistem de așteptare pentru, de exemplu, codigniter în loc de un proces Cron, prin ce este diferit de cron?

3- Voi fi liber de astfel de probleme când voi face PHP un sistem care rulează în fundal?

multumesc advence

Puncte:0
drapel vn
  1. De ce poate fi cauzată această defecțiune în Cron?

Aceasta nu este o problemă cron.

Cron este un programator foarte simplu care pur și simplu începe un nou lot la ora/intervalul pe care îl specificați.

Când, indiferent de motiv, sarcina dvs. în lot nu se poate finaliza la timp înainte de începerea următoarei iterații, încheiați cu două procese concurente. Cron nu face nimic pentru a preveni asta.

Depinde într-adevăr de ipotezele și codul dvs. dacă acest lucru provoacă imediat o problemă sau nu.

Este posibil ca imediat a doua iterație să creeze o formă de blocaj și să se blocheze pe termen nelimitat, 10 secunde mai târziu a treia iterație se blochează în impasul cauzat de a doua iterație și 10 secunde mai târziu și următoarele iterații se blochează imediat. Etc. Etc. Asta poate rapid bulgăre de zăpadă.

Sau ar putea fi un proces mult mai lent, în care pentru fiecare lot individual, timpul de execuție crește încet și, în loc să blocheze din ce în ce mai multe loturi de rulare mai lungi ajung să ruleze concomitent.Acest lucru (în cele din urmă) mărește încărcarea și mai mult, declanșează conflictul de resurse și are ca rezultat joburi în loturi care durează și mai mult până la finalizare și mai multe loturi simultane/concurente și lipsa de resurse.

  1. Când creez un sistem de așteptare pentru, de exemplu, codigniter în loc de un proces Cron, prin ce este diferit de cron?

După cum ați experimentat aici, cron nu este un sistem de așteptare. Este doar un programator foarte simplu.

Dacă doriți să adăugați un control mai complex al jobului, trebuie să creați asta. Vezi de exemplu acest răspuns Aici despre cum să împiedicați pur și simplu mai multe loturi cron să ruleze concomitent în specificația dvs. de lot.

În caz contrar, rularea a ceva mai avansat decât simplu cron poate fi o soluție.

  1. Voi fi liber de astfel de probleme când voi face PHP un sistem care rulează în fundal?

Dacă cauza principală este faptul că codul dvs. se întrerupe ori de câte ori se execută două loturi simultan, măsurile concepute pentru a face codul să ruleze mai rapid nu vor elimina acest defect și nici nu vor împiedica acest lucru să se repete.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.