mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Potential Memory Leak Problems #635
Closed
opened 2025-12-29 16:24:07 +01:00 by adam
·
12 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#635
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @WilliamMarti on GitHub (Jan 17, 2017).
So I have Netbox running on an Ubuntu t2.small(1 vCPU 2 GM RAM) server in AWS. I am running Netbox v1.8.0 right now as well.
I have about 20,000 IPs in Netbox currently(and about another 50,000 to go). When I load the 'IP Addresses' Page it is quite slow which may be a CPU bottleneck, but once it is finished loading my memory jumps way up and stays up. When I start paging through the IP address pages, I eventually use all of my available memory and can crash the gunicorn app server.
Restarting the supervisor service my server idles at about ~290 MB of memory, but once I start loading pages I can see my memory climb. It is not as apparent with Sites or other data categories that are not as large. This is most prominent with IP addresses because I have so many I am guessing.
It seems like Netbox is loading the entire set of IP addresses I have behind the scenes. I have looked into gunicorn and found you can have the the workers restart automatically after a # of requests, but seems like a bandaid. I have set my 'max_requests' to 2 in my gunicorn config, which seems to have helped the issue for now.
So I guess my question is, is this intended behavior? Regardless of the amount of RAM I have, continuously loading large pages over time appears like it will use all the available RAM on a server.
@jeremystretch commented on GitHub (Jan 18, 2017):
It does seem that certain views are pulling down entire database tables with no
LIMITappended to the SQL query. I can't work out exactly why this is happening, but it seems to stem from the rendering of tables in django-tables2. It's probably worthwhile at this point to re-implement the object lists and ditch django-tables2 altogether.Also, just to verify, you are not running with
DEBUGenabled in the configuration, correct?@WilliamMarti commented on GitHub (Jan 18, 2017):
Not from what I can tell. In settings.py:
DEBUG = getattr(configuration, 'DEBUG', False)Nothing regarding DEBUG in my configuration.py file. I do have LDAP configured so I think:
logger.setLevel(logging.DEBUG)is set. Not sure if that makes a difference.
@jeremystretch commented on GitHub (Jan 18, 2017):
Nah, it's only enabled if you set
DEBUG = Truein configuration.py. (You'll see the debug toolbar appear on the right side of the screen when using NetBox, too.) Thanks for checking.@jeremystretch commented on GitHub (Jan 20, 2017):
I've re-implemented the manner in which bulk editing and deletion is done on objects, which should be much more efficient now. However, I'm not sure whether this was contributing to your issue. The change has been pushed to the
developbranch if you'd like to try cloning it (not recommended for production use). Otherwise, it will be included in the v1.8.3 release, which will probably be in a couple weeks.@WilliamMarti commented on GitHub (Jan 21, 2017):
I can test this tomorrow, although based on your description I am not sure this is the fix. Merely reading/viewing data was making my RAM usage climb.
@WilliamMarti commented on GitHub (Jan 25, 2017):
Sorry for the delay, this is still on my radar. Running into some server problems with my own deployment that are not related to Netbox itself.
@WilliamMarti commented on GitHub (Jan 25, 2017):
It looks like this is still going on. Having the workers restart after a set number of requests seems to alleviate the issue fine though.
The bigger issue for me is the app selecting the entire table for whatever we are viewing. For most data types this isn't an issue because I have less that 3000 entries. But I have 77000 IPs entered in currently so this pegs my EC2 instance pretty hard. I realize I am running this on a pretty low end instance, but if there was a way to do a "LIMIT 50" for each pages SELECT, I think that would fix the issue for me.
If not I can probably move up to a t2.medium
@jeremystretch commented on GitHub (Jan 25, 2017):
Can you try running NetBox with
DEBUG = Trueset in configuration.py? This will display the debug toolbar along the righthand side of the screen. Clicking the SQL tab will show a breakdown of each database query and the time it's taking. I'm curious which queries are taking the longest.@WilliamMarti commented on GitHub (Jan 25, 2017):
There are 3 that are suspect, but 1 big one. If I run these on my AWS instance I get a 502 error from nginx which I am guessing is related to the slowness of the SELECT. Ran these tests on my VMware Workstation VM, still slow but at least they complete. For this both netbox and postgres are on the same VM
This one took 1023.61ms to complete
This took 125.89 ms to finish
Took 119.15 ms to finish
@jeremystretch commented on GitHub (Jan 26, 2017):
I'm pretty sure that first query shouldn't be there. IIRC it was removed when I re-implemented the method for bulk editing or deleting all objects matching a query (code). Are you running on an updated copy of the develop branch?
@WilliamMarti commented on GitHub (Jan 27, 2017):
So my apologies, once I switched my netbox deploy to the develop branch, my issues went away immediately. I think this issue can be closed.
Thank you so much for the assistance
@jeremystretch commented on GitHub (Jan 27, 2017):
Awesome! Glad we got that worked out. Thanks for not giving up on NetBox.