1 |
Hello Norbi, |
2 |
|
3 |
Gondoltam rá. De összesen 24 órám volt a feladatra. |
4 |
Találtam is 3 jónak tűnő megoldást. Sajnos feladtam mert csak 2 volt npm |
5 |
be. |
6 |
|
7 |
https://www.npmjs.org/package/watch-inotify |
8 |
|
9 |
https://www.npmjs.org/package/inotify-plusplus |
10 |
|
11 |
Egyik se volt hajlandó magától npm -g install al felmenni. De végleges |
12 |
megoldásnak egyértelműen az inotify a legjobb. |
13 |
|
14 |
|
15 |
|
16 |
Udv |
17 |
Laszlo |
18 |
|
19 |
On 11/27/14 05:27, Bukuli Norbert wrote: |
20 |
> Sziasztok! |
21 |
> |
22 |
> Testa <testa.a.tapos@×××××.com> írta (2014. november 27. 2:02): |
23 |
>> Szia Peter, |
24 |
>> |
25 |
>> Alapjaba veve a script csak a logok valtozasanak ellenorzesert felel. |
26 |
>> Tehat igen ez nem file olvasas. |
27 |
> Nem latom a teljes feladatot, de erre esetleg nem lehetne inotify-t hasznalni? |
28 |
> |
29 |
> Udvozlettel: |
30 |
> Bukuli Norbert |
31 |
> |
32 |
>> De sajnos a hulye fs bele nyit. |
33 |
>> Nos a lenyeg, hogy bele keveredtem egy fogadasba. Egy par fejleszto |
34 |
>> akikkel dolgozom keszitett egy php programot ami 1 gigabajtnyi xmlt |
35 |
>> dolgoz fel. |
36 |
>> A felhaborodasom oka hogy : |
37 |
>> -Minden egyes fajlt egyesevel beraknak a tmp-be. |
38 |
>> -Majd onnan kiolvasva dolgozak fel es |
39 |
>> -Majd minden egyes szekciot egyesevel updatelnek a mysql szerveren. |
40 |
>> -Ezzel 12 orara naponta 100% lekra terhelnek 2 magot. (egy a mysql nek |
41 |
>> egy a scriptnek.) |
42 |
>> -Mondanom se kell mikor meglattam a 80 fokos cpu-t azonnal lelottem a |
43 |
>> mysql-t... |
44 |
>> -Ebbol vitam lett, es azzal lett lezarva hogy ezt nem lehet maskepp. |
45 |
>> -Viszont a fonokuk fogadott velem: Ha kepes vagyok 1 ora alatt |
46 |
>> lefutattni egy hasonlot ugy hogy ellenorzom amit a rendszer normal |
47 |
>> esetben csinal akkor kirugja ezt a 2 idiotat. De csak nodejs vagy php |
48 |
>> lehet C be nem er. |
49 |
>> |
50 |
>> Nos biztonsagosan -Ofast nelkul -O3 nodejs el a program 40 masodperc |
51 |
>> alatt futt le ha a file check futt.(O3 nal nincs hiba) -Ofast os nodejs |
52 |
>> el ez 21 masodperc. |
53 |
>> |
54 |
>> Hat es igen tevedtem. |
55 |
>> Mivel a kerdest tokeletesen megoldottam, de sajnos nem magamtol: ki kell |
56 |
>> kapcsolni a grsec et. |
57 |
>> (Nem eles szerver szoval nem lesz baja 1 napot kibir )... |
58 |
>> |
59 |
>> |
60 |
>> " |
61 |
>> |
62 |
>> Ezek egyike sem jelent milisec-enkénti korlátozást. Viszont, ha jól |
63 |
>> értem ezek olyasmiről szólnak, hogy értesítést lehet kérni a kerneltől |
64 |
>> ha egyik vagy másik fájl változik. Valószínű hogy az fs.statSync-ben van |
65 |
>> ilyen figyelés is kérve, s azok túl későn lesznek elengedve. Talán |
66 |
>> mintha ugyanazon 300 fájlt többszörösen is figyelni próbálná a script. |
67 |
>> És lehet hogy csak előre leprogramozott intervallumonként fut le az a |
68 |
>> kód ami elengedi a fájl figyelést. Ez pedig programhiba. Ha van elég |
69 |
>> memóriád emelheted ezeket a limiteket, jóformán kockázat nélkül. De |
70 |
>> azért jobb ha utánaolvasol, hogy pontosan mi a szerepe ezeknek egyenként. |
71 |
>> |
72 |
>> " |
73 |
>> |
74 |
>> Majdnem telibe talaltad. |
75 |
>> Mielott az elso file el lenne engedve a script nyitja a masikat. |
76 |
>> Mivel az fs egy require al jonn a scriptbe. |
77 |
>> Megoldas lehetne az is hogy minden file kulon zaras nyitas. Esetleg |
78 |
>> tenyleg eldobom a fugvenyt, es ujra hivom mielott |
79 |
>> a masik fajlra lepek. De ezzel lassulna a rendszer vagy 2 masodperccel. |
80 |
>> Valojaban 19 masodpercen kockaztatom a biztonsagos futtast... Mikor 3600 |
81 |
>> alatt kell maradnom szimplan. |
82 |
>> Nem kell mondanod tudom hogy hulye vagyok. |
83 |
>> |
84 |
>> |
85 |
>> |
86 |
>> " |
87 |
>> |
88 |
>> Mégis, én inkább nem demóznék egy olyan kétes programot, ami egy stat |
89 |
>> hívás-t, mely nem igényel fájl megnyitást sem, nem tud biztonsággal |
90 |
>> végrehajtani. Egyébként is, a rendszernek számtalan olyan karbantartási |
91 |
>> feladata van melyhez esetenként sok fájlt kell megnyitnia és bezárnia. |
92 |
>> Mégis működik nem? |
93 |
>> |
94 |
>> " |
95 |
>> |
96 |
>> Na igen de azokat nem egy process nyitja meg egyszerre... |
97 |
>> Az alap rendszert csak egy orult forgatja -Ofast al... |
98 |
>> |
99 |
>> " |
100 |
>> |
101 |
>> Ez nem kernel-beállítás hanem valami nodejs-sel vagy |
102 |
>> a nálad lévő scripttel kapcsolatos hiba lesz. |
103 |
>> |
104 |
>> " |
105 |
>> En nem mondtam hogy nem en vagyok az oka. |
106 |
>> Mindent koszi, tenyleg segitettel gondolkozni. |
107 |
>> |
108 |
>> real 0m20.341s |
109 |
>> |
110 |
>> Ez kevesebb mint 1 ora. Azt hiszem jo lesz. |
111 |
>> Logok neked egy par sorrel. Ha arra jarok megadom. |
112 |
>> |
113 |
>> Udv |
114 |
>> Laszlo |
115 |
>> |
116 |
>> |
117 |
>> On 11/26/14 15:03, Császár Péter wrote: |
118 |
>>> Szia László! |
119 |
>>> |
120 |
>>> Az igen kurta nodejs doksi alapján: |
121 |
>>> http://nodejs.org/api/fs.html#fs_fs_statsync_path |
122 |
>>> arra tippelek, hogy egészen egyszerű stat rendszerhívás lehet a háttérben: |
123 |
>>> http://linux.die.net/man/2/fstat |
124 |
>>> |
125 |
>>> Márpedig ehhez nem kell megnyitni egy fájlt sem. Továbbra is erősen |
126 |
>>> gyanús hogy súlyos programhiba van a háttérben. |
127 |
>>> |
128 |
>>> Bár a /proc/sys/fs alatti dolgokkal nem vagyok érdemben ismerős, a |
129 |
>>> /proc/sys/fs/inotify egy könyvtár és alatt nálam az alábbi fájlok annak |
130 |
>>> benne (tartalommal): |
131 |
>>> max_queued_events (16384) |
132 |
>>> max_user_instances (128) |
133 |
>>> max_user_watches (524288) |
134 |
>>> |
135 |
>>> Ezek egyike sem jelent milisec-enkénti korlátozást. Viszont, ha jól |
136 |
>>> értem ezek olyasmiről szólnak, hogy értesítést lehet kérni a kerneltől |
137 |
>>> ha egyik vagy másik fájl változik. Valószínű hogy az fs.statSync-ben van |
138 |
>>> ilyen figyelés is kérve, s azok túl későn lesznek elengedve. Talán |
139 |
>>> mintha ugyanazon 300 fájlt többszörösen is figyelni próbálná a script. |
140 |
>>> És lehet hogy csak előre leprogramozott intervallumonként fut le az a |
141 |
>>> kód ami elengedi a fájl figyelést. Ez pedig programhiba. Ha van elég |
142 |
>>> memóriád emelheted ezeket a limiteket, jóformán kockázat nélkül. De |
143 |
>>> azért jobb ha utánaolvasol, hogy pontosan mi a szerepe ezeknek egyenként. |
144 |
>>> |
145 |
>>> Mégis, én inkább nem demóznék egy olyan kétes programot, ami egy stat |
146 |
>>> hívás-t, mely nem igényel fájl megnyitást sem, nem tud biztonsággal |
147 |
>>> végrehajtani. Egyébként is, a rendszernek számtalan olyan karbantartási |
148 |
>>> feladata van melyhez esetenként sok fájlt kell megnyitnia és bezárnia. |
149 |
>>> Mégis működik nem? Ez nem kernel-beállítás hanem valami nodejs-sel vagy |
150 |
>>> a nálad lévő scripttel kapcsolatos hiba lesz. |
151 |
>>> |
152 |
>>> Üdv, |
153 |
>>> Péter |
154 |
>>> |
155 |
>>> 2014-11-26 14:13 keltezéssel, Testa írta: |
156 |
>>>> Szia Peter, |
157 |
>>>> |
158 |
>>>> Koszi a valaszod. |
159 |
>>>> Meg egzsyer meg probalom meg fogalmazni. |
160 |
>>>> Egy 200 sorros scriptrol beszelunk ami egy set interval utan csinal 300 |
161 |
>>>> fs.statSync et... (ha read lenne akkor lassabb lenne es nem lepne fel a |
162 |
>>>> hiba.) |
163 |
>>>> Persze tudom hogy az emelt file rendszer cache a fo ok amiert ilyen |
164 |
>>>> gyorsan kepes az olvasast vegre hajtani a rendszer. Szoval technikailag |
165 |
>>>> az en hibam is. De szuksegem van erre a teljesitmenyre... ( Mivel a |
166 |
>>>> rendszer egy demonstracio ) |
167 |
>>>> |
168 |
>>>> A problema az hogy a linux kernel 8 file megnyisat teszi lehetove ms |
169 |
>>>> ekenkent... Probaltam a /proc/sys/fs be meg talalni a erre a megoldast. |
170 |
>>>> Ugyan meg is talaltam a /proc/sys/fs/inotify ba amit keresek. De ezt nem |
171 |
>>>> merem 300 ra allitani. Ha persze a programot le lassitom akkor |
172 |
>>>> tokeletesen fut. Viszont nem hiszem hogy ez hosszu tavon jo megoldas... |
173 |
>>>> (Teny jelenleg ezt a modszert valasztottam) |
174 |
>>>> |
175 |
>>>> |
176 |
>>>> Udv |
177 |
>>>> Laszlo |
178 |
>>>> |
179 |
>>>> On 11/26/14 12:50, Császár Péter wrote: |
180 |
>>>>> Szia Testa, |
181 |
>>>>> |
182 |
>>>>> Kissé homályos hogy mi is történik pontosan, de majdnem biztos vagyok |
183 |
>>>>> benne hogy vagy az a nodejs progi, vagy az általa használt libekben |
184 |
>>>>> valahol súlyos hiba van. Helyesen megírt program nem fog elszállni csak |
185 |
>>>>> mert gyorsabb gépet teszünk alá. |
186 |
>>>>> |
187 |
>>>>> Szóval a helyedben én írnék egy bugriportot, ha fontos ez a program a |
188 |
>>>>> számodra. |
189 |
>>>>> |
190 |
>>>>> Üdv, |
191 |
>>>>> Péter |
192 |
>>>>> |
193 |
>>>>> 2014-11-26 13:08 keltezéssel, Testa írta: |
194 |
>>>>>> Hello mindenki, |
195 |
>>>>>> |
196 |
>>>>>> Tenyleg olyan hibam van amit nehez elhinni. |
197 |
>>>>>> Nem gentoos hiba de remelem lesz valakinek otlete. |
198 |
>>>>>> Szoval. Adott egy nodejs program ami olvas a file 300 filet. |
199 |
>>>>>> Ezt elvegzi minden masodpercben. |
200 |
>>>>>> A program tokeletesen mukodik majdnem minden desktopon. |
201 |
>>>>>> Ha az nem i7 es a merevlemez nem egy jo gyors ssd es nincs szanaszet |
202 |
>>>>>> optimalizalt gentoo a rendszeren. |
203 |
>>>>>> Sajnos ssd -n plusz i7-en vagy xeon-on olyan gyors hgy a sigserv kilovi. |
204 |
>>>>>> (XEON on mar az elso olvasas meghal, i7 en en csak a madsodik ellenorzes) |
205 |
>>>>>> Sajonos ez nodejs es nem tudok wait-et/sleep-et hasznalni. |
206 |
>>>>>> Van ra mod hogy a file limitet/ms -et atirjam ? |
207 |
>>>>>> |
208 |
>>>>>> |
209 |
>>>>>> Elore is koszi. |
210 |
>>>>>> |
211 |
>> |
212 |
> |