Type:
Bug
Priority:
Major
Resolution:
Fixed
Affects Version/s:
None
Fix Version/s:
None
Component/s:
None
Performance issue with client library when used with more connections.
Logging resource consumption output using getrusage() http://linux.die.net/man/2/getrusage
With 400 threads, each thread querying 1000 times here is the result:
user time (ms): 25589
system time (ms): 80732
page reclaims (soft page faults) : 2072
voluntary context switches : 263758
involuntary context switches : 3026
Since there a lot of context switches involved and high system time, degraded performance can be observed when used for long periods of time.
The same test with MySQL client results in
user time (ms): 21503
system time (ms): 3793
page reclaims (soft page faults) : 3213
voluntary context switches : 265321
involuntary context switches : 73
How to reproduce:
A simple c/c++ app which does the following will recreate the issue:
1. initializes client library, mysql_library_init().
2. spawns threads defined in "THREADS_TO_CREATE".
3. waits for all the threads to finish execution
4. clears the resources, mysql_library_end()
5. exits the application
every thread does the following:
1. starts with mysql_thread_init()
2. initializes a MYSQL* object, mysql_init()
3. set's the client connect timeout to 30 seconds, mysql_options()
4. attempts to connect to MySQL server, mysql_real_connect()
5. if connected, it executes a query, mysql_query()
6. loop through the result set, mysql_fetch_row()
7. free the reources and loop through for the specified times in
TIMES_TO_SELECT
8. mysql_close() is called
9. lastly, before exiting the thread, mysql_thread_end() is called.
Attaching a sample code that describes the problem:
To use the sample application:
1. compile: g++ -g app.cpp -o mariadbapp -I./mariadb/include -L./mariadb -lpthread -lmariadbclient -ldl -lssl
2. to run the binary: ./mariadbapp
P.S: I am using the rev 117 for testing.
{"report":{"fcp":1816.199999988079,"ttfb":788.6999999880791,"pageVisibility":"visible","entityId":30920,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"5fa19692-a335-4ae8-a95c-37f21e85c3c2","navigationType":0,"readyForUser":1909.5,"redirectCount":0,"resourceLoadedEnd":1862.4000000059605,"resourceLoadedStart":794.4000000059605,"resourceTiming":[{"duration":500.69999998807907,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":794.4000000059605,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":794.4000000059605,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1295.0999999940395,"responseStart":0,"secureConnectionStart":0},{"duration":500.80000001192093,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":794.6999999880791,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":794.6999999880791,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1295.5,"responseStart":0,"secureConnectionStart":0},{"duration":554.2999999821186,"initiatorType":"script","name":"https://jira.mariadb.org/s/e9b27a47da5fb0f74a35acd57e9847fb-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":794.9000000059605,"connectEnd":794.9000000059605,"connectStart":794.9000000059605,"domainLookupEnd":794.9000000059605,"domainLookupStart":794.9000000059605,"fetchStart":794.9000000059605,"redirectEnd":0,"redirectStart":0,"requestStart":794.9000000059605,"responseEnd":1349.199999988079,"responseStart":1349.199999988079,"secureConnectionStart":794.9000000059605},{"duration":594.1999999880791,"initiatorType":"script","name":"https://jira.mariadb.org/s/c32eb0da7ad9831253f8397e6cc26afd-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":795,"connectEnd":795,"connectStart":795,"domainLookupEnd":795,"domainLookupStart":795,"fetchStart":795,"redirectEnd":0,"redirectStart":0,"requestStart":795,"responseEnd":1389.199999988079,"responseStart":1389.199999988079,"secureConnectionStart":795},{"duration":597.6999999880791,"initiatorType":"script","name":"https://jira.mariadb.org/s/bc0bcb146314416123c992714ee00ff7-CDN/lu2bv2/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":795.3000000119209,"connectEnd":795.3000000119209,"connectStart":795.3000000119209,"domainLookupEnd":795.3000000119209,"domainLookupStart":795.3000000119209,"fetchStart":795.3000000119209,"redirectEnd":0,"redirectStart":0,"requestStart":795.3000000119209,"responseEnd":1393,"responseStart":1392.9000000059605,"secureConnectionStart":795.3000000119209},{"duration":598,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":795.5,"connectEnd":795.5,"connectStart":795.5,"domainLookupEnd":795.5,"domainLookupStart":795.5,"fetchStart":795.5,"redirectEnd":0,"redirectStart":0,"requestStart":795.5,"responseEnd":1393.5,"responseStart":1393.5,"secureConnectionStart":795.5},{"duration":599.0999999940395,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":795.5999999940395,"connectEnd":795.5999999940395,"connectStart":795.5999999940395,"domainLookupEnd":795.5999999940395,"domainLookupStart":795.5999999940395,"fetchStart":795.5999999940395,"redirectEnd":0,"redirectStart":0,"requestStart":795.5999999940395,"responseEnd":1394.699999988079,"responseStart":1394.699999988079,"secureConnectionStart":795.5999999940395},{"duration":692.5999999940395,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2bv2/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":795.8000000119209,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":795.8000000119209,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1488.4000000059605,"responseStart":0,"secureConnectionStart":0},{"duration":599.6999999880791,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":796,"connectEnd":796,"connectStart":796,"domainLookupEnd":796,"domainLookupStart":796,"fetchStart":796,"redirectEnd":0,"redirectStart":0,"requestStart":796,"responseEnd":1395.699999988079,"responseStart":1395.699999988079,"secureConnectionStart":796},{"duration":692.3000000119209,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":796.1999999880791,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":796.1999999880791,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1488.5,"responseStart":0,"secureConnectionStart":0},{"duration":600.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/719848dd97ebe0663199f49a3936487a-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":796.1999999880791,"connectEnd":796.1999999880791,"connectStart":796.1999999880791,"domainLookupEnd":796.1999999880791,"domainLookupStart":796.1999999880791,"fetchStart":796.1999999880791,"redirectEnd":0,"redirectStart":0,"requestStart":796.1999999880791,"responseEnd":1396.699999988079,"responseStart":1396.699999988079,"secureConnectionStart":796.1999999880791},{"duration":868.2000000178814,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":797.0999999940395,"connectEnd":797.0999999940395,"connectStart":797.0999999940395,"domainLookupEnd":797.0999999940395,"domainLookupStart":797.0999999940395,"fetchStart":797.0999999940395,"redirectEnd":0,"redirectStart":0,"requestStart":797.0999999940395,"responseEnd":1665.300000011921,"responseStart":1665.300000011921,"secureConnectionStart":797.0999999940395},{"duration":1065.300000011921,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":797.0999999940395,"connectEnd":797.0999999940395,"connectStart":797.0999999940395,"domainLookupEnd":797.0999999940395,"domainLookupStart":797.0999999940395,"fetchStart":797.0999999940395,"redirectEnd":0,"redirectStart":0,"requestStart":797.0999999940395,"responseEnd":1862.4000000059605,"responseStart":1862.4000000059605,"secureConnectionStart":797.0999999940395},{"duration":168.5,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":1499.5999999940395,"connectEnd":1499.5999999940395,"connectStart":1499.5999999940395,"domainLookupEnd":1499.5999999940395,"domainLookupStart":1499.5999999940395,"fetchStart":1499.5999999940395,"redirectEnd":0,"redirectStart":0,"requestStart":1499.5999999940395,"responseEnd":1668.0999999940395,"responseStart":1668.0999999940395,"secureConnectionStart":1499.5999999940395},{"duration":243.80000001192093,"initiatorType":"link","name":"https://jira.mariadb.org/s/d5715adaadd168a9002b108b2b039b50-CDN/lu2bv2/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/css/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":1753.0999999940395,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1753.0999999940395,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1996.9000000059605,"responseStart":0,"secureConnectionStart":0},{"duration":243.59999999403954,"initiatorType":"link","name":"https://jira.mariadb.org/s/50bc9be5bfead1a25e72c1a9338c94f6-CDN/lu2bv2/820016/12ta74/e108c7645258ccb43280ed3404e3e949/_/download/contextbatch/css/com.atlassian.jira.plugins.jira-development-integration-plugin:0,-_super,-jira.view.issue,-jira.global,-jira.general,-jira.browse.project,-project.issue.navigator,-atl.general/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":1753.5999999940395,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1753.5999999940395,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":1997.199999988079,"responseStart":0,"secureConnectionStart":0},{"duration":234.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/e65b778d185daf5aee24936755b43da6/_/download/contextbatch/js/browser-metrics-plugin.contrib,-_super,-project.issue.navigator,-jira.view.issue,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":1754.5,"connectEnd":1754.5,"connectStart":1754.5,"domainLookupEnd":1754.5,"domainLookupStart":1754.5,"fetchStart":1754.5,"redirectEnd":0,"redirectStart":0,"requestStart":1754.5,"responseEnd":1989,"responseStart":1989,"secureConnectionStart":1754.5},{"duration":238.89999997615814,"initiatorType":"script","name":"https://jira.mariadb.org/s/53a43b6764f587426c7bb9a150184c00-CDN/lu2bv2/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/js/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":1754.800000011921,"connectEnd":1754.800000011921,"connectStart":1754.800000011921,"domainLookupEnd":1754.800000011921,"domainLookupStart":1754.800000011921,"fetchStart":1754.800000011921,"redirectEnd":0,"redirectStart":0,"requestStart":1754.800000011921,"responseEnd":1993.699999988079,"responseStart":1993.699999988079,"secureConnectionStart":1754.800000011921},{"duration":239.7000000178814,"initiatorType":"script","name":"https://jira.mariadb.org/s/630dda803a823fdd5771c4338338e018-CDN/lu2bv2/820016/12ta74/e108c7645258ccb43280ed3404e3e949/_/download/contextbatch/js/com.atlassian.jira.plugins.jira-development-integration-plugin:0,-_super,-jira.view.issue,-jira.global,-jira.general,-jira.browse.project,-project.issue.navigator,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":1755.199999988079,"connectEnd":1755.199999988079,"connectStart":1755.199999988079,"domainLookupEnd":1755.199999988079,"domainLookupStart":1755.199999988079,"fetchStart":1755.199999988079,"redirectEnd":0,"redirectStart":0,"requestStart":1755.199999988079,"responseEnd":1994.9000000059605,"responseStart":1994.9000000059605,"secureConnectionStart":1755.199999988079}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":49,"responseStart":788,"responseEnd":792,"domLoading":791,"domInteractive":1960,"domContentLoadedEventStart":1960,"domContentLoadedEventEnd":1996,"domComplete":2881,"loadEventStart":2881,"loadEventEnd":2883,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1949.5},{"name":"bigPipe.sidebar-id.end","time":1950.300000011921},{"name":"bigPipe.activity-panel-pipe-id.start","time":1950.4000000059605},{"name":"bigPipe.activity-panel-pipe-id.end","time":1952.800000011921},{"name":"activityTabFullyLoaded","time":2007.5}],"measures":[],"correlationId":"feb6373f3b00e1","effectiveType":"4g","downlink":9.5,"rtt":0,"serverDuration":107,"dbReadsTimeInMs":9,"dbConnsTimeInMs":17,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}