New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CPU load rises extremely while downloading binaries from mesh #530

Closed
DevNils opened this Issue Nov 5, 2018 · 4 comments

Comments

Projects
None yet
2 participants
@DevNils

DevNils commented Nov 5, 2018

Gentics Mesh Version, operating system, or hardware.

  • v0.24.0
  • v0.27.1

Operating System

  • Linux

JVM

  • Comes with docker

Problem

We deal with relatively large files (around 4GB) in mesh. While downloading a big file, the CPU load of the mesh java process rises to a very high base (around 100%).

Reproducer

  • Upload a big file to a node (around 4GB)
  • Download the binary file (with curl e.g.)

Expected behaviour and actual behaviour

We tried to download the same file directly from apache which caused a CPU load of 5%. The CPU load should not be to high while downloading a file from mesh.

@Jotschi

This comment has been minimized.

Member

Jotschi commented Nov 5, 2018

@DevNils Thanks for the report. I'll profile and check the code. Serving static resources should be a zero-copy operation with nearly no CPU utilization involved.

TODO @Jotschi :

  • Check why HttpServerResponse#sendFile is not working as expected
  • Add dedicated performance test for large files
  • Check why this is not an issue for TVC installation

@Jotschi Jotschi added the bug label Nov 5, 2018

Jotschi added a commit that referenced this issue Nov 5, 2018

@Jotschi

This comment has been minimized.

Member

Jotschi commented Nov 5, 2018

@DevNils I made a fix which will hopefully make it into the next release. I'll inform you once the version is available.

@Jotschi

This comment has been minimized.

Member

Jotschi commented Nov 7, 2018

@DevNils I just released 0.27.2 which includes the performance fixes. The new version will also utilize native bindings when run on linux (e.g. docker) to increase HTTP performance. I was able to run downloads with 1.8 GB/s - The CPU load is now much lower. Let me know whether this solves your issue.

@Jotschi Jotschi closed this Nov 7, 2018

@Jotschi Jotschi self-assigned this Nov 7, 2018

@DevNils

This comment has been minimized.

DevNils commented Nov 7, 2018

Thanks a lot! The download is much faster and the CPU load is low (around 8%).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment