Custom Fields and Redmine performance

Added by Moritz Koehler almost 7 years ago

Hi,

at my redmine it takes up to 10 sekonds to update an Issue if i use my custom fields (round about 100).

So I was curious and did a test on clean installation. These are the ms it took to update an Issue.
The CPU runs on nearly 100% during that time.

Test clean installation 100 CF's 200 CF's 1200 CF's
1 262 ms 1000 ms 1635 ms 17000 ms
2 136 ms 600 ms
3 102 ms 800 ms
4 144 ms
5 103 ms

Also interesting: if i use a tracker without CF's it is also fast again (600ms). There seems to be a performance issue for Custom Fields.

Here the log of my current installation

Processing by IssuesController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"xxxxx", "issue"=>{"is_private"=>"0", "project_id"=>"5", "tracker_id"=>"4$
Current user: data_migration (id=55) = Running before_save custom workflows for issue "Phase out test layout" (#191) = Finished running before_save custom workflows for issue "Phase out test layout" (#191).
Rendered mailer/_issue.text.erb (7.0ms)
Rendered mailer/issue_edit.text.erb within layouts/mailer (17.5ms)
Rendered plugins/redmine_custom_workflow_email_support/app/views/mailer/_issue.html.erb (1.1ms)
Rendered mailer/issue_edit.html.erb within layouts/mailer (22.2ms) = Running after_save custom workflows for issue "Phase out test layout" (#191) = Finished running after_save custom workflows for issue "Phase out test layout" (#191).
Redirected to http://xxxxxxxxxx/redmine/issues/191
Completed 302 Found in 7461.3ms (ActiveRecord: 45.1ms)

Does anybody have an idea how to speed up the time?

Thank you verry much.

Regards
Moritz

Replies (2)

RE: Custom Fields and Redmine performance - Added by James H almost 7 years ago

Are you talking about the application or the db side of things? is the database and application on the same machine and same cores?

Custom Fields is a big bulky table and it gets exponentially worse as you add more to it. I am surprised you are able to have 200 custom fields and still have "use-able" performance. When I try to join a few (like 3?) custom fields together in a query, it takes 20 seconds to do anything. Add another one and it takes 120+ seconds.

Without changing the database structure or changing the application code, the only way to speed up the time is to either use less custom fields or to upgrade your hardware.

I may be wrong though.

btw, you say it takes you 10 seconds to update 100 custom fields, but your chart says 1000ms for 100 custom fields... 1000ms is 1 second. . . ?

RE: Custom Fields and Redmine performance - Added by Moritz Koehler almost 7 years ago

Hi Thank you for the answer,

Are you talking about the application or the db side of things? is the database and application on the same machine and same cores?

I was talking about the application, but i am not sure where the problem is. expecially because the log shows that the ActiveRecord just took 45.1ms. But i am not that knowlaged about programming and data bases.
Yes they are on the same maschine. It is a Virtual Maschine on a Server.

Custom Fields is a big bulky table and it gets exponentially worse as you add more to it. I am surprised you are able to have 200 custom fields and still have "use-able" performance. When I try to join a few (like 3?) custom fields together in a query, it takes 20 seconds to do anything. Add another one and it takes 120+ seconds.

I just tried it with 4 custom fields in a query, but it was very quick for me. But may this is because I have just 200 Issues yet.

Without changing the database structure or changing the application code, the only way to speed up the time is to either use less custom fields or to upgrade your hardware.

What suprises me is that the CPU is on 100%, is the bottle neck would be the hard drive.

btw, you say it takes you 10 seconds to update 100 custom fields, but your chart says 1000ms for 100 custom fields... 1000ms is 1 second. . . ?

The 10 secondes are on my actual Redmine installation which is I use on a daily basis. The results in the box came from a test i did on clean (bitnami) redmine installation on my laptop. There i added up to 1200 CF's to see what happend.

Here are some infos about my hardware:

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU: 2
On-line CPU list: 0,1
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 2
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 44
Stepping: 2
CPU MHz: 2799.204
BogoMIPS: 5598.40
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 12288K
NUMA node0 CPU: 0,1

description: Computer
width: 64 bits
capabilities: ldt16 vsyscall32
*-core
description: Motherboard
physical id: 0
*-memory
description: System memory
physical id: 0
size: 3953MiB
*-cpu:0
product: Intel(R) Xeon(R) CPU X5660 2.80GHz
vendor: Intel Corp.
physical id: 1
bus info: cpu@0
width: 64 bits
capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp x86-64 constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes hypervisor lahf_lm ida arat epb dtherm
*-cpu:1
product: Intel(R) Xeon(R) CPU X5660
2.80GHz
vendor: Intel Corp.
physical id: 2
bus info: cpu@1
width: 64 bits
capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp x86-64 constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes hypervisor lahf_lm ida arat epb dtherm

(1-2/2)