Strona 1 z 2

Serwer dedykowany - duŻa liczba zadań CRON

: 20 kwietnia 2008, 15:08
autor: robson_ek
Witam,

Nie wiem czy dobry temat wybrałem (czy wogule dobre forum ;) ) ale mam taki problem.

Mój serwis się rozrasta i za niedługo będe zmuszony przejść na dedyka.

Problem polega na tym że w moim serwisie userki dodają mase rzeczy co równa się z bardzo duża ilością zadań CRON.

Mój problem polega na tym aby rozwiązać to jak najbardziej korzystnie dla serwera.

Licząc że np dziennie będzie około 200 zadań CRON dodanych do pliku CRONTAB to po miesiącu 30 * 200 robi się już bardzo duży plik i myślę że przez to po jakimś czasie serwer zacznie mulić.

Zadania te są jednorazowe. Tzn ktoś ustawia akcje na jutro ona się wykonuje i zadanie można usunąć ;)
Czasami zdarzy się że jest kilka akcji w tej samej minucie.

Wymyśliłem że można by zrobić osobne pliki CRONa (takie dzienne) gdzie były by zadania tylko w danym dniu i tylko w tym dniu serwer by je sprawdzał i tak tworzył by osobne pliki codziennie a ja potem co jakiś czas (bądź automat) bym stare pliki usuwał.

Pozostaje tylko kwestia techniczna czy serwer na linuxie oferuje taką możliwość? Bo za bardzo nie siedzę na linuxie

Ewentualnie może ktoś z forumowiczów jest w stanie mi pomóc?

Z góry dzięki
Pozdrawiam

: 20 kwietnia 2008, 15:34
autor: nightwish86
Wyciąg z man crontab:

Kod: Zaznacz cały

       Internally,  this  cron uses a quick indexing system to reduce CPU overhead when looking for commands to execute.  Several
       hundred crontabs with several thousand entries can be handled without using noticable CPU resources.
Polecam lekturkę, zadania per user są tam właśnie opisane. Na serwerach w mojej firmie do Crona jest dodanych kilkaset zadań, nie ma żadnego obciążenia CPU.

: 20 kwietnia 2008, 22:28
autor: robson_ek
No tak ale w końcu będzie tego tak dużo że plik będzie zajmował np 1GB i otwarcie tego pliku będzie potrzebowało dużo czasu.

No i ja lubię mieć porządek na serwerze i chciałbym to jakoś rozdzielić... Bo te zadania będą ciągle dodawane i też pewnie dodawanie by potem trwało dłużej.

Da się jakoś to inaczej rozwiązać?

: 20 kwietnia 2008, 23:10
autor: giaur
No tak ale w końcu będzie tego tak dużo że plik będzie zajmował np 1GB
No nie przesadzajmy, na to zeby plik urosl do 1 GB w twoim przypadku to okolo 5 lat.

: 21 kwietnia 2008, 00:11
autor: robson_ek
giaur pisze:
No tak ale w końcu będzie tego tak dużo że plik będzie zajmował np 1GB
No nie przesadzajmy, na to zeby plik urosl do 1 GB w twoim przypadku to okolo 5 lat.
Te 200 zadań to był tylko przykład... jest ich kilka razy więcej i ciągle rośnie.

A choćby za 5 lat będzie miał to 1 GB i co wtedy będę ręcznie przeszukiwał stare zadania i usuwał ręcznie kilka mln zadań? Wolałbym to dlatego dzielić na części, tylko za bardzo nie wiem jak...;(


P.S. Zadania nie muszą być w pliku ustawione chronologicznie?

: 21 kwietnia 2008, 08:16
autor: giaur
Nie wiem czy to zadziala, bo sam tego nie robilem, ale ja bym probowal zrobic tak, zeby crony "czyscil sie sam".

Czyli na przyklad do crona.daily dodalbys skrypt, ktory codziennie czysci plik crontab ze zbednych wpisow - zakladam ze mozliwe jest do ustalenia ktore wpisy trzeba wywalic i ze wiesz jak to zrobic w bashu.
P.S. Zadania nie muszą być w pliku ustawione chronologicznie?
Chronologicznie? A co to znaczy chonologicznie w tym przypadku? Posortowane wg godziny wykonania czy co?

: 21 kwietnia 2008, 08:38
autor: loleq
robson_ek pisze:Zadania te są jednorazowe.
A może rozważ użycie at?

: 21 kwietnia 2008, 12:27
autor: robson_ek
giaur pisze:Nie wiem czy to zadziala, bo sam tego nie robilem, ale ja bym probowal zrobic tak, zeby crony "czyscil sie sam".

Czyli na przyklad do crona.daily dodalbys skrypt, ktory codziennie czysci plik crontab ze zbednych wpisow - zakladam ze mozliwe jest do ustalenia ktore wpisy trzeba wywalic i ze wiesz jak to zrobic w bashu.
P.S. Zadania nie muszą być w pliku ustawione chronologicznie?
Chronologicznie? A co to znaczy chonologicznie w tym przypadku? Posortowane wg godziny wykonania czy co?
Tak posortowane wg daty wykonania.

hmmm... Tak jak pisałem za bardzo na linuxie sie nie znam. Tylko podstawy ale mógłbym to zrobić w PHP. Skrypt byłby uruchamiany i on czyściłby te zadania. Mogło by tak być?


Co to jest "at" :) ?

: 21 kwietnia 2008, 12:32
autor: giaur
Skrypt byłby uruchamiany i on czyściłby te zadania. Mogło by tak być?
Mogloby tak byc, tylko ze o ile dobrze sie orientuje, to musisz miec php jako cgi (a nie jako modul Apache), wtedy tworzysz skrypt uruchamiajacy plik php za pomoca polecenia (programu) php.

Tak bezposrednio to pliku php nie uruchomisz, bo niby jak?

: 21 kwietnia 2008, 12:57
autor: jaSS
robson_ek, a tak na marginesie czemu do jednorazowych zadań wykorzystujesz crona? Przecież cron jest do cyklicznych zadań.

Poczytaj o czymś takim jak to służy do jednorazowego wykonania zadania w wybranej chwili


Inna sprawa, skoro chcesz to napisać w php to czy nie możesz tego zapisywać w jakiejś bazie, a uruchamiać tylko jeden skrypt z php który pobiera zaplanowane zadanie, wykonuje je i usuwa wpis z bazy czy coś w tym stylu?