-
Notifications
You must be signed in to change notification settings - Fork 17.7k
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
runtime: performance degradation in high-load long running applications #32398
Comments
Just to be totally clear, this investigation was done using your service and not the benchmark below, correct? Can you comment more on memory consumption? Do you mean RSS? Also, since it's related to the changes that appear to cause the regression, do you run your service with
That is a strange benchmark indeed. The many calls to |
@mknyszek This strange benchmark is just a quick and dirty try to simulate service load. Of course there are no
I want to clarify again: right now service built with Go 1.11 works absolutely well without any |
Thanks for the information, and belated thanks for all the detail and the reproducer. My apologies for how long it's taken to get back to you. I just want to be absolutely clear that |
@mknyszek Thanks for response. Yes. As I wrote earlier I made test deployments with commits from
|
@mknyszek Just notes which may be useful during investigation (Go 1.11.6): In service we massively using Average stats:
Hope this helps. |
@akaspin I am doing almost same what you have described above and am facing the same issue. we are doing around the same we are having almost 600 TCP/IP connection connected with another 600 TCP/IP so roughly around we are using 600x600 TCP/IP connection but right now we are having a temporary connection so every-time it will be creating and closing the connection. But it is consuming a huge amount of memory in short period but the Garbage collector is not freeing up in the same time so what do you suggest to have a permanent connection as you have done in you project and di you get the solution for your issue if you have solved it can you please guide us how can we solve this issue. we are using GRPC with protobuf. |
@jayeshwebcluesglobal We just fixed Go version on 1.11.10. |
@akaspin Thanks! it seems we are running on older version(1.9.3), will check issue by upgrading to 1.11.10 |
@akaspin Want to take your view on one thing, |
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (
go env
)?go env
OutputWhat did you do?
My company spotted serious performance degradation in one of high load services. Service handles about 100K TCP permanent connections and using complex processing for about 75K partners requests per second. When we tried to upgrade Go from 1.11.6 to 1.12.5 we noted that performance fell by a third. Service begins seriously misbehave after about 15-30 mins after start.
After investigation I found that performance degradation caused by commits
1678b2c5..873bd47d
. Commits1678b2c5..457c8f4f
causes slight performance degradation. Performance of service builded with873bd47d
and later is absolutely horrible as well as memory consumption. Also I noted that CPU load from873bd47d
reduced from 100% to 67%. Last commit with acceptable performance is6e9fb11b3
.Very strange benchmark:
Maybe not of all ops makes sense but the results speak for themselves. Benchmarks are executed with Go built from source
6e9fb11b..873bd47d
. Here is brief results. You can find details in attached archives.6e9fb11b
(OK):873bd47d
(degraded):Detailed results:
0-6e9fb11b.zip
1-1678b2c5.zip
2-143b13ae.zip
3-457c8f4f.zip
4-873bd47.zip
Referred commits:
What did you expect to see?
Normal performance like in Go 1.11.6.
What did you see instead?
Big performance degradation with service built with Go 1.12+
The text was updated successfully, but these errors were encountered: