[MXS-2639] maxinfo memory leak Created: 2019-08-14  Updated: 2019-12-19  Resolved: 2019-10-10

Status: Closed
Project: MariaDB MaxScale
Component/s: maxinfo
Affects Version/s: 2.3.9, 2.3.11
Fix Version/s: 2.3.13

Type: Bug Priority: Major
Reporter: Sergey Smirnov Assignee: markus makela
Resolution: Fixed Votes: 0
Labels: None

Attachments: PNG File Screenshot_20190814_122734.png     PNG File Screenshot_20190814_123005.png     File ms_print.gz     File ms_print_maxscale-2.3.15-1.gz    

 Description   

Hi!
I use readwritesplit router on maxscale-2.3.9, but problem can be reproduce on maxscale-2.3.11.
Kernel: 3.10.0-957.12.2.el7.x86_64

UPD: My configuration use keepalived(active - passive), I see memory leak on passive node too.
UPD: add valgrind ms_print result to attach (massif test)

[maxscale]
threads = auto
 
###
#       SERVERS
###
[mysql-dev01]
type = server
protocol = MariaDBBackend
address = 192.168.0.18
port = 3307
 
[mysql-dev02]
type = server
protocol = MariaDBBackend
address = 192.168.0.20
port = 3307
 
[mysql-dev03]
type = server
protocol = MariaDBBackend
address = 192.168.0.98
port = 3307
 
[mysql-dev04]
type = server
protocol = MariaDBBackend
address = 192.168.0.99
port = 3307
 
[mysql-dev05]
type = server
protocol = MariaDBBackend
address = 192.168.0.103
port = 3307
 
[mysql-dev06]
type = server
protocol = MariaDBBackend
address = 192.168.0.104
port = 3307
 
[mysql-dev07]
type = server
protocol = MariaDBBackend
address = 192.168.0.106
port = 3307
 
[mysql-dev08]
type = server
protocol = MariaDBBackend
address = 192.168.0.107
port = 3307
 
[mysql-dev09]
type = server
protocol = MariaDBBackend
address = 192.168.0.108
port = 3307
 
[mysql-dev10]
type = server
protocol = MariaDBBackend
address = 192.168.0.31
port = 3307
 
[mysql-dev11]
type = server
protocol = MariaDBBackend
address = 192.168.0.169
port = 3307
 
[mysql-dev12]
type = server
protocol = MariaDBBackend
address = 192.168.0.170
port = 3307
 
 
 
###
#       SERVICES
###
[Service-for-cluster_12]
user = maxscale
password = fixme
filters = Hint
type = service
router = readwritesplit
servers = mysql-dev01, mysql-dev02
master_accept_reads = true
[Service-for-cluster_34]
user = maxscale
password = fixme
filters = Hint
type = service
router = readwritesplit
servers = mysql-dev03, mysql-dev04
master_accept_reads = true
[Service-for-cluster_78]
user = maxscale
password = fixme
filters = Hint
type = service
router = readwritesplit
servers = mysql-dev07, mysql-dev08
master_accept_reads = true
[Service-for-mysql_dev10]
user = maxscale
password = fixme
filters = Hint
type = service
router = readwritesplit
servers = mysql-dev10
master_accept_reads = true
[Service-for-exchange_DEV]
user = maxscale
password = fixme
filters = Hint
type = service
router = readwritesplit
servers = mysql-dev11, mysql-dev12
master_accept_reads = true
 
 
###
#       MONITORING & FAILOVER
###
[MariaDB-Monitor-for-cluster_12]
type = monitor
module = mariadbmon
user = replica
password = fixme
monitor_interval = 5000
failover_timeout = 10
auto_failover = false
servers = mysql-dev01, mysql-dev02
[MariaDB-Monitor-for-cluster_34]
type = monitor
module = mariadbmon
user = replica
password = fixme
monitor_interval = 5000
failover_timeout = 10
auto_failover = false
servers = mysql-dev03, mysql-dev04
[MariaDB-Monitor-for-cluster_78]
type = monitor
module = mariadbmon
user = replica
password = fixme
monitor_interval = 5000
failover_timeout = 10
auto_failover = false
servers = mysql-dev07, mysql-dev08
[MariaDB-Monitor-for-mysql_dev10]
type = monitor
module = mariadbmon
user = replica
password = fixme
monitor_interval = 5000
failover_timeout = 10
auto_failover = false
servers = mysql-dev10
[MariaDB-Monitor-for-exchange_DEV]
type = monitor
module = mariadbmon
user = replica
password = fixme
monitor_interval = 5000
failover_timeout = 10
auto_failover = false
servers = mysql-dev11, mysql-dev12
 
 
###
#       LISTENERS
###
[Listener-for-cluster_12]
address = 0.0.0.0
type = listener
service = Service-for-cluster_12
protocol = MariaDBClient
port = 3308
[Listener-for-cluster_34]
address = 0.0.0.0
type = listener
service = Service-for-cluster_34
protocol = MariaDBClient
port = 3309
[Listener-for-cluster_78]
address = 0.0.0.0
type = listener
service = Service-for-cluster_78
protocol = MariaDBClient
port = 3306
[Listener-for-mysql_dev10]
address = 0.0.0.0
type = listener
service = Service-for-mysql_dev10
protocol = MariaDBClient
port = 3307
[Listener-for-exchange_DEV]
address = 0.0.0.0
type = listener
service = Service-for-exchange_DEV
protocol = MariaDBClient
port = 3310
 
 
[MaxAdmin-Service]
type = service
router = cli
 
[MaxAdmin-Listener]
type = listener
service = MaxAdmin-Service
protocol = maxscaled
socket = default
 
[Hint]
type = filter
module = hintfilter
 
[MaxInfo]
type=service
router=maxinfo
 
[MaxInfo Listener]
type=listener
service=MaxInfo
protocol=HTTPD
address=127.0.0.1
port=9000



 Comments   
Comment by Sergey Smirnov [ 2019-08-16 ]

Cannot reproduce after unload maxinfo (look valgrind result)

Comment by Sergey Smirnov [ 2019-12-19 ]

I tried to use its module again. Bug is actual.
ms_print_maxscale-2.3.15-1.gz

How to reproduce:
I parallel execute and periodic check memory utilization

for i in `seq 1 1000000`; do echo $i; curl --user user:password 127.0.0.1:9000/servers; done
for i in `seq 1 1000000`; do echo $i; curl --user user:password 127.0.0.1:9000/services; done
for i in `seq 1 1000000`; do echo $i; curl --user user:password 127.0.0.1:9000/monitors; done
for i in `seq 1 1000000`; do echo $i; curl --user user:password 127.0.0.1:9000/variables; done

Generated at Thu Feb 08 04:15:36 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.