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