SonarQube 10.x 3 times slower compared to 9.9 LTS

Hi,

we updated our CI system to test our plugin with SQ 9.9 LTS and in addtion with SQ 10.x (starting with 10.6). Running the same test projects in both environments SQ 10.7 is about 3 times slower as previous SQ 9.9 LTS?

Is this an known issue?

grafik

CI system:

Regards,
Günter

Hey Gunter.

This would seem to align with some other reports. I recently ran my own tests and passed them along internally. I’ll add your post to the discussion I started internally.

Hi,

I took a closer look at this again:

Community 9.9.7.96285:

13:23:59.199 INFO  Scanner configuration file: /home/runner/work/sonar-cxx/sonar-cxx/test/sonar-scanner-6.2.1.4610/conf/sonar-scanner.properties
13:23:59.202 INFO  Project root configuration file: /home/runner/work/sonar-cxx/sonar-cxx/integration-tests/testdata/smoketest_project/sonar-project.properties
13:23:59.214 INFO  SonarScanner CLI 6.2.1.4610
13:23:59.215 INFO  Java 17.0.12 Eclipse Adoptium (64-bit)
13:23:59.215 INFO  Linux 6.5.0-1025-azure amd64
13:23:59.221 DEBUG Scanner max available memory: 3 GB
13:23:59.798 INFO  Communicating with SonarQube Server 9.9.7.96285
...
13:23:59.984 DEBUG Community 9.9.7.96285
...
113:24:00.946 INFO  Load active rules
13:24:00.960 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSec5d8jGvp_VwUV&ps=500&p=1 | time=12ms
13:24:01.043 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSfh5d8jGvp_VwVT&ps=500&p=1 | time=12ms
13:24:01.062 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSgc5d8jGvp_VwWw&ps=500&p=1 | time=13ms
13:24:01.073 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoShP5d8jGvp_VwXQ&ps=500&p=1 | time=5ms
13:24:01.133 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSiC5d8jGvp_VweS&ps=500&p=1 | time=60ms
13:24:01.211 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSk95d8jGvp_Vwnu&ps=500&p=1 | time=50ms
13:24:01.240 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSmB5d8jGvp_Vwq2&ps=500&p=1 | time=12ms
13:24:01.363 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSn15d8jGvp_Vw6X&ps=500&p=1 | time=121ms
13:24:01.400 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSqJ5d8jGvp_VxCw&ps=500&p=1 | time=14ms
13:24:01.415 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSrE5d8jGvp_VxEz&ps=500&p=1 | time=14ms
13:24:01.431 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSr75d8jGvp_VxGV&ps=500&p=1 | time=14ms
13:24:01.438 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSsg5d8jGvp_VxGv&ps=500&p=1 | time=4ms
13:24:01.444 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSsi5d8jGvp_VxGz&ps=500&p=1 | time=6ms
13:24:01.475 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoStV5d8jGvp_VxK2&ps=500&p=1 | time=31ms
13:24:01.506 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSun5d8jGvp_VxNm&ps=500&p=1 | time=27ms
13:24:01.512 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSvO5d8jGvp_VxOC&ps=500&p=1 | time=5ms
13:24:01.520 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoWgT5d8jGvp_Vx4I&ps=500&p=1 | time=8ms
13:24:01.532 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSwO5d8jGvp_VxTk&ps=500&p=1 | time=11ms
13:24:01.560 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSvf5d8jGvp_VxRL&ps=500&p=1 | time=27ms
13:24:01.571 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSwv5d8jGvp_VxUN&ps=500&p=1 | time=8ms
13:24:01.583 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSxP5d8jGvp_VxVa&ps=500&p=1 | time=11ms
13:24:01.651 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSyN5d8jGvp_VxeN&ps=500&p=1 | time=67ms
13:24:01.707 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoSz-5d8jGvp_Vxoj&ps=500&p=1 | time=49ms
13:24:01.747 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoS1e5d8jGvp_Vxs_&ps=500&p=1 | time=35ms
13:24:01.838 DEBUG GET 200 http://localhost:9000/api/rules/search.protobuf?f=repo,name,severity,lang,internalKey,templateKey,params,actives,createdAt,updatedAt,deprecatedKeys&activation=true&qprofile=AZKaoS3B5d8jGvp_Vx0c&ps=500&p=1 | time=90ms
13:24:01.852 INFO  Load active rules (done) | time=906ms
...
13:24:03.969 INFO  Analysis total time: 3.588 s
13:24:03.970 INFO  EXECUTION SUCCESS
13:24:03.971 INFO  Total time: 4.774s

Community 10.7.0.96327

13:40:52.890 INFO  Scanner configuration file: /home/runner/work/sonar-cxx/sonar-cxx/test/sonar-scanner-6.2.1.4610/conf/sonar-scanner.properties
13:40:52.893 INFO  Project root configuration file: /home/runner/work/sonar-cxx/sonar-cxx/integration-tests/testdata/smoketest_project/sonar-project.properties
13:40:52.905 INFO  SonarScanner CLI 6.2.1.4610
13:40:52.907 INFO  Java 17.0.12 Eclipse Adoptium (64-bit)
13:40:52.907 INFO  Linux 6.5.0-1025-azure amd64
13:40:52.913 DEBUG Scanner max available memory: 3 GB
13:40:53.527 INFO  Communicating with SonarQube Server 10.7.0.96327
...
13:40:53.949 DEBUG Community 10.7.0.96327
...
13:40:54.984 INFO  Load active rules
13:40:54.984 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=13375db9-7199-41b4-8e6b-7705e2bfacb1&ps=500&p=1
13:40:55.090 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=13375db9-7199-41b4-8e6b-7705e2bfacb1&ps=500&p=1 (104ms, 7151-byte body)
13:40:55.162 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=92a7f9a9-b6b9-47ff-a00f-87a0966d468c&ps=500&p=1
13:40:55.203 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=92a7f9a9-b6b9-47ff-a00f-87a0966d468c&ps=500&p=1 (41ms, unknown-length body)
13:40:55.209 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=56553dee-8f29-4157-85f1-e269b6bac9cb&ps=500&p=1
13:40:55.267 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=56553dee-8f29-4157-85f1-e269b6bac9cb&ps=500&p=1 (57ms, unknown-length body)
13:40:55.273 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=e24a83c2-15f8-4a6a-8d6d-5c9b3d6963aa&ps=500&p=1
13:40:55.276 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=e24a83c2-15f8-4a6a-8d6d-5c9b3d6963aa&ps=500&p=1 (3ms, 12-byte body)
13:40:55.277 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=b3ecb54f-234a-4eb6-afea-9956b2842706&ps=500&p=1
13:40:56.112 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=b3ecb54f-234a-4eb6-afea-9956b2842706&ps=500&p=1 (835ms, unknown-length body)
13:40:56.154 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=d63e02e6-1293-4dd0-8782-a246bbda2b00&ps=500&p=1
13:40:56.955 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=d63e02e6-1293-4dd0-8782-a246bbda2b00&ps=500&p=1 (799ms, unknown-length body)
13:40:56.980 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=44174fd7-40ba-46fc-bfae-541f030d0a4f&ps=500&p=1
13:40:57.139 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=44174fd7-40ba-46fc-bfae-541f030d0a4f&ps=500&p=1 (163ms, unknown-length body)
13:40:57.142 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=b820f1d2-0257-46e9-b800-560f381bfc22&ps=500&p=1
13:40:58.257 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=b820f1d2-0257-46e9-b800-560f381bfc22&ps=500&p=1 (1114ms, unknown-length body)
13:40:58.281 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=b820f1d2-0257-46e9-b800-560f381bfc22&ps=500&p=2
13:40:58.325 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=b820f1d2-0257-46e9-b800-560f381bfc22&ps=500&p=2 (42ms, 3989-byte body)
13:40:58.327 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=1c315eaa-b89e-4fe0-b3cf-17feab6e7b17&ps=500&p=1
13:40:58.490 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=1c315eaa-b89e-4fe0-b3cf-17feab6e7b17&ps=500&p=1 (162ms, unknown-length body)
13:40:58.492 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=ace136af-107d-4ef1-9739-06bf3810538b&ps=500&p=1
13:40:58.551 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=ace136af-107d-4ef1-9739-06bf3810538b&ps=500&p=1 (59ms, unknown-length body)
13:40:58.553 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=87076682-3684-4ec2-a6f3-68f2455901cf&ps=500&p=1
13:40:58.619 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=87076682-3684-4ec2-a6f3-68f2455901cf&ps=500&p=1 (65ms, 7249-byte body)
13:40:58.620 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=713b3ee9-9af0-497b-8735-1a2ead05794b&ps=500&p=1
13:40:58.623 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=713b3ee9-9af0-497b-8735-1a2ead05794b&ps=500&p=1 (2ms, 12-byte body)
13:40:58.624 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=06049c36-2236-4544-9e8d-a78c4f4df90f&ps=500&p=1
13:40:59.434 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=06049c36-2236-4544-9e8d-a78c4f4df90f&ps=500&p=1 (809ms, unknown-length body)
13:40:59.440 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=fcc937e0-4e5b-41bd-90f1-63d4aa11d9cc&ps=500&p=1
13:40:59.449 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=fcc937e0-4e5b-41bd-90f1-63d4aa11d9cc&ps=500&p=1 (9ms, 358-byte body)
13:40:59.450 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=fa8c9b6e-8f23-41ac-827d-d5af4e21ca07&ps=500&p=1
13:40:59.790 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=fa8c9b6e-8f23-41ac-827d-d5af4e21ca07&ps=500&p=1 (340ms, unknown-length body)
13:40:59.794 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=699e1c49-dd02-45f0-926e-b0eff3e4872c&ps=500&p=1
13:40:59.911 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=699e1c49-dd02-45f0-926e-b0eff3e4872c&ps=500&p=1 (116ms, unknown-length body)
13:40:59.912 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=f3e0d31d-9b3a-4cd6-a1c4-c64fcf5b5c39&ps=500&p=1
13:40:59.916 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=f3e0d31d-9b3a-4cd6-a1c4-c64fcf5b5c39&ps=500&p=1 (3ms, 12-byte body)
13:40:59.916 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=0866ac8b-cdb2-4535-bf3a-a13d52672fa9&ps=500&p=1
13:40:59.928 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=0866ac8b-cdb2-4535-bf3a-a13d52672fa9&ps=500&p=1 (11ms, 2174-byte body)
13:40:59.928 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=e8e3c879-55a8-4c9f-98ef-41a30a6cdbb0&ps=500&p=1
13:40:59.975 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=e8e3c879-55a8-4c9f-98ef-41a30a6cdbb0&ps=500&p=1 (46ms, 7691-byte body)
13:40:59.976 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=f3888fc6-0cea-4240-bdc4-14bb6207de79&ps=500&p=1
13:41:00.265 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=f3888fc6-0cea-4240-bdc4-14bb6207de79&ps=500&p=1 (288ms, unknown-length body)
13:41:00.267 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=a8d5bd29-504f-47e5-90d7-1b6e4ceb08c4&ps=500&p=1
13:41:00.597 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=a8d5bd29-504f-47e5-90d7-1b6e4ceb08c4&ps=500&p=1 (329ms, unknown-length body)
13:41:00.599 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=ee676064-2b1b-4b6d-b8e2-073766bf5677&ps=500&p=1
13:41:00.690 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=ee676064-2b1b-4b6d-b8e2-073766bf5677&ps=500&p=1 (90ms, unknown-length body)
13:41:00.691 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=45381fe6-e500-4b21-8d9a-ad952adfe5cf&ps=500&p=1
13:41:01.507 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=45381fe6-e500-4b21-8d9a-ad952adfe5cf&ps=500&p=1 (815ms, unknown-length body)
13:41:01.512 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=88a29345-6e9c-4521-8157-786a606e166c&ps=500&p=1
13:41:01.860 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=88a29345-6e9c-4521-8157-786a606e166c&ps=500&p=1 (347ms, unknown-length body)
13:41:01.871 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=13e374a7-b3da-43e0-86b2-705402c3c648&ps=500&p=1
13:41:02.073 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=13e374a7-b3da-43e0-86b2-705402c3c648&ps=500&p=1 (201ms, unknown-length body)
13:41:02.075 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=be4f2476-937c-40bd-8673-610045684323&ps=500&p=1
13:41:02.214 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=be4f2476-937c-40bd-8673-610045684323&ps=500&p=1 (139ms, unknown-length body)
13:41:02.215 DEBUG --> GET http://localhost:9000/api/rules/list.protobuf?qprofile=ed3d10c1-aae0-4dcf-8494-72a7e34d87b0&ps=500&p=1
13:41:03.061 DEBUG <-- 200 http://localhost:9000/api/rules/list.protobuf?qprofile=ed3d10c1-aae0-4dcf-8494-72a7e34d87b0&ps=500&p=1 (844ms, unknown-length body)
13:41:03.078 INFO  Load active rules (done) | time=8094ms
...
13:41:05.091 INFO  Analysis total time: 10.436 s
13:41:05.118 INFO  EXECUTION SUCCESS
13:41:05.119 INFO  Total time: 12.231s

The performance loss is Load active rules (about 8s), Below the two complete LOG files:
_smoketest_project_1.log (36.5 KB)
_smoketest_project_1.log (39.4 KB)

Regards,
Günter

Hey @guwirth

I believe we’re tracking that specific slowdown on Jira

But your logs also make it look like a lot of the processing time is happening on the SonarQube server you spin up, which aligns with the performance hit I mentioned earlier.

Hi,

short update:

  • sonarqube_9.9.7.96285_java_17_os_ubuntu-latest 9m 54s
  • sonarqube_10.7.0.96327_java_17_os_ubuntu-latest 31m 5s
  • sonarqube_24.12.0.100206_java_17_os_ubuntu-latest 30m 36s

See no improvement, still 3x slower.

Regards,
Günter

Hey @guwirth

We have implemented several tickets that will be available in the next release to bring the total analysis time (scanner + Compute Engine) closer to the prior performance.

SONAR-22998 - Optimize loading of active rules from the scanner
SONAR-24006 - Big regression in the Compute Engine step “Load quality profiles”
SONAR-23974 - Use enums for impacts in the scanner report to its reduce size
SONAR-24057 - Optimize querying of measures to only load required measures in memory

I don’t expect performance will return to the exact same – SonarQube has evolved in the last 2 years, it stores more data per issue, indexes more files… but hopefully these address the most severe performance degradations. I’ll be interested to see how your tests perform once the binaries are available!

3 Likes

Hi @Colin,

did a first test with sonarqube-25.1.0.102122; times are much better now:

  • ubuntu-latest, Java 17, temurin, SQ 9.9.8.100196, Scanner 6.2.1.4610: 10m 17s
  • ubuntu-latest, Java 17, temurin, SQ 25.1.0.102122 , Scanner 6.2.1.4610: 11m 42s

Still 13% slower but no more factor 3!

Thanks for your support.

Günter

5 Likes

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.