Re: [postgresql-it] out of memory

  • From: Gmail <guido.venturati@xxxxxxxxx>
  • To: postgresql-it <postgresql-it@xxxxxxxxxxxxx>
  • Date: Fri, 16 Jan 2015 09:05:26 +0100

Ciao,
sicuramente avrai fatto tutti i controlli del caso e la mia segnalazione ha una 
altissima probabilità di essere inutile.
Riporto solo una mia esperienza analoga (ERROR:  out of memory) sulla 
esecuzione di una query annidata. 
Dopo aver smanettato a 1000 sulle configurazioni di memoria il caso si è 
risolto valutando attentamente il cast sul campo della query annidata:

WHERE field_id ->> 'pageId' in (SELECT stage.eng_page.identifier::text

Guido

Il giorno 15/gen/2015, alle ore 23:33, Enrico Bianchi 
<enrico.bianchi@xxxxxxxxx> ha scritto:


On 01/15/2015 07:06 PM, Chris Mair wrote:
- puoi provare a "semplificare" la query, per vedere se c'e` un punto oltre 
il quale l'errore scompare?
Posso dirti che, se tolgo l'IN (che, per 64 record, secondo il planner genera 
6mln di record)ed uso un solo valore, la query viene eseguita correttamente. 
Pero`, gia` se metto 5 dei valori riportati dalla subquery, esplode tutto (il 
query plan dice che dovrebbe restituire 336500 record)

- puoi tenere d'occhio top/free/slabtop mentre esegui la query? vedi il 
processo worker che continua a crescere, Linux a iniziare a usare swap e poi 
il processo scomparire nel momento che hai l'error o e` un altro pattern, 
tipo l'error appare subito?
Ecco, questo e` un altro punto che non riesco a capire. Per intenderci, 
questo e` un vmstat lanciato mentre stava estraendo 336500 record:

procs -----------memory---------- ---swap-- -----io---- --system-- 
-----cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa 
st
0  0      0 64467148  16888 996464    0    0     5     1   75   40 5  1 94  0 
 0
2  0      0 64365252  16888 996464    0    0     0     0  734  167 13  2 82  
0  2
1  0      0 63471488  16888 996464    0    0     0     1 1102  176 21  4 75  
0  0
1  0      0 62257732  16888 996464    0    0     0    12 1070  160 21  4 74  
0  2
1  0      0 60939172  16888 996464    0    0     0     0 1072  158 21  4 75  
0  0
1  0      0 59627188  16888 996464    0    0     0     6 1071  161 21  4 75  
0  0
1  0      0 58324692  16888 996464    0    0     0     0 1069  152 21  4 75  
0  0
1  0      0 57002732  16888 996464    0    0     0     0 1049  133 21  4 75  
0  0
1  0      0 55671200  16888 996464    0    0     0     1 1076  152 21  4 75  
0  0
1  0      0 54316064  16896 996460    0    0     0     4 1056  140 21  4 75  
0  0
1  0      0 52939020  16896 996464    0    0     0     0 1052  140 22  3 75  
0  0
1  0      0 51558644  16896 996464    0    0     0     5 1069  156 21  4 75  
0  0
1  0      0 50188544  16896 996464    0    0     0     0 1069  156 21  4 75  
0  0
0  0      0 64464804  16896 996476    0    0     0     0  557  269 6  7 88  0 
 0

L'idea che mi sono fatto, ad occhio, e` che va in OOM quando deve *mostrare* 
i dati, non quando li estrae

- imagino che il database sia grande | segreto | e` una storia complicata 
altrimenti mi piacerebbe provare a riprodurre l'errore su una mia macchina 
(la butto li`...)
In teoria non c'e` nulla di segreto, sono dati estratti da pagine di Facebook 
e questa query era un primo passo per elaborarli, piu` che altro direi che 
sia una storia complicata portarli fuori

Enrico
_______________________________________________
Postgresql-it mailing list
Postgresql-it@xxxxxxxxxxxxx
http://lists.psql.it/mailman/listinfo/postgresql-it


Other related posts: