mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-13 03:13:58 +03:00
Performance Degradation on Large Pages #3462
Closed
opened 2026-02-05 06:47:17 +03:00 by OVERLORD
·
12 comments
No Branch/Tag Specified
development
l10n_development
release
v25-12
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
pull-request
Mirrored from GitHub Pull Request
No Label
🐕 Support
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#3462
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 @carlossierra311 on GitHub (Jan 19, 2023).
Originally assigned to: @ssddanbrown on GitHub.
Attempted Debugging
Searched GitHub Issues
Describe the Scenario
I have a page I consider large (but not unusual in our context), with 29.000+ words, 183.000+ characters, 1.400 lines of code divided in 27 code blocks and 5 images. When I try to edit the page, it takes more than 10 seconds every time for the first character to appear on screen, and every consecutive edit takes the same time.
I already tried this tip, and it improved the response time (before, every edit could take close to one minute), but it's still unsustainable.
With smaller pages, performance is quite good, and the application feels very responsive.
Is there anything else that can be done to further improve performance to usable levels?
Exact BookStack Version
v22.11.1
Log Content
No response
PHP Version
8.1.10
Hosting Environment
Windows Server 2019 Standard v1809, OS build 17763.3406
32 GB Ram, Intel Xeon E3-1230 v5 @3.4GHz
BookStack installed manually by following these steps, using the following components:
php-8.1.10
mysql-8.0.30
nginx-1.23.1
Memory usage is usually around 50% (this server is used to host a couple other applications), and CPU usage is around 5%, even during the reported behavior.
@ssddanbrown commented on GitHub (Jan 26, 2023):
Hi @carlossierra311,
The reality is, there will always be some level of limit to length of content before it affects part of a system. While it may be possible to add measures to break things down, doing so adds complexity that probably wouldn't be worthwhile if such issues only exist in minor edge/use-cases.
That said, we can try to look at the current bottleneck to see if that can be improved.
Based on your info, this is likely going to be directly related to the browser-side code and specifically the editor.
These kinds of things can be very content-specific, is there any chance you could provide a faithful, yet anonymized if required, example of page content that you experience this degradation for? If using the WYSIWYG editor one of the right-most buttons in the toolbar allows viewing the source.
Also, please confirm if you're using the default WYSIWYG editor or the markdown editor.
@carlossierra311 commented on GitHub (Jan 27, 2023):
Thank you @ssddanbrown for your reply. I managed to reproduce the same behavior by creating a new document and pasting the contents of this page on it (I copied the content up to the See also section, and left out the rest from there on). After that, if I try to start editing the content, the long lag starts to occur.
I am using the WYSIWYG editor. Please let me know if you need any other information from my side.
@carlossierra311 commented on GitHub (Jan 27, 2023):
By the way, I just noticed the lag is starting to appear in a new smaller document I'm working on, with only 2 images, no code blocks, 5457 words and 35.088 characters.
@ssddanbrown commented on GitHub (Jan 27, 2023):
Thanks for the example @carlossierra311, I'll look into this once I get some time to do so.
Since this is client-side performance, would you be able to confirm the your own computer specs, operating system and browser in use? Just to give a reference point.
@carlossierra311 commented on GitHub (Jan 27, 2023):
Thanks @ssddanbrown. Here you go:
@0xbbeer commented on GitHub (Feb 14, 2023):
Hello! I have same issue with large page that contains tables and text content ( all around 127000 symbols). Saving that page take more than 5 minutes. I was trying save content in markdown and html, from browser's and by API, but result was the same.
OS: Debian 11
WebServer: Apache
PHP: 7.4.33
Bookstack Version: 22.11
CPU: 4vCPU (when page saving, one of 4 CPU load to 100%)
RAM: 4G
laravel.log
[2023-02-14 06:44:35] production.ERROR: Maximum execution time of 520 seconds exceeded {"userId":15,"exception":"[object] (Symfony\\Component\\ErrorHandler\\Error\\FatalError(code: 0): Maximum execution time of 520 seconds exceeded at /var/www/bookstack/app/Entities/Tools/PageContent.php:231) [stacktrace] #0 {main} "}@ssddanbrown commented on GitHub (Feb 14, 2023):
@0xbbeer Issue #3932 is more relevant to your scenario since this thread looks to be client-side, whereas your issue is server-side.
@ssddanbrown commented on GitHub (Feb 22, 2023):
I've been testing this today.
From my testing this part of the code is relatively inefficient and becomes a bottleneck on larger pages to introduce lag upon change.
Currently we're fetching the editor content upon any change then communicating that up to the parent page editor component, so it can manage auto-saving. Think this could be changed so that the content itself is not communicated on every change, but instead just the event itself to indicate a change has occured, then we should fetch the content only when actually needed.
There'd probably still be some level of lag on auto-save (that would be much trickier to address) but that would only be every 30s or so (and commonly not while making changes I'd imagine) and doing the above should improve things massively with reasonable effort. I'll assign this to the next feature release.
@carlossierra311 commented on GitHub (Feb 23, 2023):
Thanks @ssddanbrown. Sounds good, from an end user's perspective.
Just one thought: what about making the auto save period configurable, so that we can increase it to 1 or 2 minutes, to balance the lag (decreased content creation productivity) with the potential work loss?
@ssddanbrown commented on GitHub (Feb 23, 2023):
@carlossierra311 That would be possible but I'd prefer to limit options where possible to keep maintainability reasonable.
I'll do the above as a significant improvement. If the auto-save lag really is problematic, based on actual experience after the above has been done, then that could then be raised as a separate issue.
@carlossierra311 commented on GitHub (Feb 23, 2023):
Sounds good. Thanks @ssddanbrown.
@ssddanbrown commented on GitHub (Feb 23, 2023):
This has now been addressed within commit
6545afacd6, and will be part of the next feature release. I'll therefore close this off.