MySQL memory leak

 ( gy | 2004. augusztus 30., hétfő - 13:18 )

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Sziasztok!

Keszitunk egy fcgi programot, aminek mysql-hez kell kapcsolodnia.
Azonban ugy tunik, hogy a mysql_connect es mysql_close
eleg sok memoriat nem szabadit fel. (~10k)

Ha csak ennyit csinal a program, mar folyik. Ha viszont ezek a sorok nincsenek benne akkor minden rendben levonek tunik.
. . .
mysql_connect(&conn,"192.168.1.1","login","pwd");
mysql_close(&conn);
. . .

Tapasztalt mar valaki ilyet? Esetleg valami megoldas?

ps.: Mindez Red6 9-en tortenik.

Nem kellene sok connect/close eseten a pconnect-et használni?

[quote:db2a27f01b="mocsi"]Nem kellene sok connect/close eseten a pconnect-et használni?[/quote:db2a27f01b]
En pconnect fuggvenyt (mysql_pconnect) csak PHP-ben talaltam.
A kerdes pedig C-rol szol.

hello,

[quote:0b1135f4a1="gy"]
Azonban ugy tunik, hogy a mysql_connect es mysql_close
eleg sok memoriat nem szabadit fel. (~10k)
...
Tapasztalt mar valaki ilyet? Esetleg valami megoldas?
[/quote:0b1135f4a1]

mysql_real_connect-el nem probaltad?

nekem ugy mukodik... legalabbis sehonnan nem jeleztek meg, h baj lenne... :)
([url]http://freshmeat.net/projects/mysql_auth/[/url])

(ti. a mysql_connect mar egy ideje nem javasolt...)

[quote:0b1135f4a1]
Ha csak ennyit csinal a program, mar folyik. Ha viszont ezek a sorok nincsenek benne akkor minden rendben levonek tunik.
. . .
mysql_connect(&conn,"192.168.1.1","login","pwd");
mysql_close(&conn);
. . .
[/quote:0b1135f4a1]
mysql_connect nelkul mit csinalsz? :)

a.

Nos csinaltunk egy test programot, ami igy nez ki:
[code:1:31f3aeff7d]
#include <stdlib.h>
#include <mysql.h>
#include <memcheck_api.h>

int main()
{
MYSQL * conn;

memcheck_init(1,1,1);

conn = mysql_init(NULL);
mysql_real_connect(conn,"192.168.1.1","xxx","xxx","xxx",3306,NULL,0);
mysql_close(conn);

memcheck_finish(1,0);

return 0;
}
[/code:1:31f3aeff7d]
A memcheck_api egy sajat cucc, ami vegulis kimutatta a folyast.
(ezt sokat teszteltuk es hasznaljuk, szoval nem o okozza a hibat :roll: )

mysql connect nelkul nincs hiba veluk viszont folyast talaltunk.
Ilyeneket:
[code:1:31f3aeff7d]
E! extra memoryblock after finish ptr=0x8049888.
Allocated at file:(null), line:-1 in function (null)
with name (null) and size 1024 bytes. Value="mysql".
E! extra memoryblock after finish ptr=0x8049e88.
Allocated at file:(null), line:-1 in function (null)
with name (null) and size 8 bytes. Value="(null)".
E! extra memoryblock after finish ptr=0x8049fa8.
Allocated at file:(null), line:-1 in function (null)
with name (null) and size 15 bytes. Value="€  passwd".

. . .
[/code:1:31f3aeff7d]

hello,

[code:1:e19f5dc025]
conn = mysql_init(NULL);
[/code:1:e19f5dc025]

mysql_init(conn);
?

bar ez nem biztos, h relevans, en kiprobalnam.

[code:1:e19f5dc025]
mysql_real_connect(conn,"192.168.1.1","xxx","xxx","xxx",3306,NULL,0);
mysql_close(conn);
[/code:1:e19f5dc025]
[quote:e19f5dc025]
A memcheck_api egy sajat cucc, ami vegulis kimutatta a folyast.
(ezt sokat teszteltuk es hasznaljuk, szoval nem o okozza a hibat :roll: )

mysql connect nelkul nincs hiba veluk viszont folyast talaltunk.
[/quote:e19f5dc025]

es ha csinalsz valami query-t is?

a.

[quote:db938ec9f7="gy"][quote:db938ec9f7="mocsi"]Nem kellene sok connect/close eseten a pconnect-et használni?[/quote:db938ec9f7]
En pconnect fuggvenyt (mysql_pconnect) csak PHP-ben talaltam.
A kerdes pedig C-rol szol.[/quote:db938ec9f7]

Hopp bocs, elneztem a tema csoportot :roll:

Kicsit átveszem gy-t?l, úgyis igazából én csinálom ezeket a MYSQL részeket.

Nos, körüljártam a mysql_init-et minden oldalról, a folyás ugyanúgy megvan. Természetesen alapból lefutott néhány query is: a query-hez tartozó memóriákat a mysql_free_result rendben felszabadította, de az alaphelyzeten nem változtatott, azaz ugyanazok a memóriadarabok maradtak meg, jobbára ugyanazzal a tartalommal.
Az mindeképpen gyanús, hogy az ottmaradt memóriadarabok egy részében olyan értelmes szövegek vannak amelyek egyértelm?en a mysql-re utalnak (legalábbis számomra)
1-2 a példa kedvéért:
mysql,passwd,hosts,/lib/libnss_files.so.2,

Még van egy ötletem, ha esetleg valakinek ez mond valamit, hogy ez egy mysql-3.23. Láttam hogy van már 4-es verzió is, s?t már 5 alfa is. Azért ezt használjuk mert ezt adták a disztribúcióhoz, de azt néztem ugyanez a verzió van egy Debian alapú szerverünkön is. Nem tudom általában melyik MYSQL verzió a használatos, mert eddig igazából PostgreSQL alá fejlesztettünk és a MYSQL kicsit új még.

A 3.23-as enyhen szolva regi, fuggetlenul attol, hogy az van a disztroban.
A 4.0-as a kurrens stabil ag, a 4.1-est ajanljak uj fejlesztesekhez. Ha kell jo unicode support, akkor mindenkeppen ez utobbi a jo valasztas.

Amugy is erdemes kulon leszedni a mysql oldalarol, mert ott eleg jol optimalizalt binarisok talalhatoak mindenhez, masreszt meg nem olyan maceras beloni az /usr/local -ba, mint elsore tunik.