The memory baseline of self-hosted programs is written in the deployment document, how to pick the content system for low-end servers

📅 2026-11-01 👁️ 0

Self-hosted program memory baseline written in deployment document, how to pick content system on low-end servers? Take the baseline as a hard condition: when the required resident memory of the program is higher than the machine's remaining amount, it is the memory that can't hold up first, not the disk. All subsequent optimizations are to make up for this upgrade. The selection order is resident memory, dependent components, and deployment method in three steps.

Why should the memory baseline be considered as a selection condition

The memory usage of the content system is not like bandwidth, which can be thinned out by caching. The resident process, template rendering, background tasks, and database connection pool all need to compete for the same remaining amount on the same machine. Once the remaining amount on the low-end server is exhausted, the performance is slow in background saving, publishing failures, and frequent restarts, rather than a clear error message.

The baseline written in the deployment document is just a starting point. The actual usage depends on how many extensions, concurrent write volume, and caching strategies are installed, so it is necessary to leave some margin when selecting, rather than buying a machine just above the minimum value.

The public threshold of several self-hosted programs

The deployment baseline checked on the day is roughly like this:

Program Public memory baseline Read on a low-end server
Strapi Over 1GB Machines over 200MB are generally not considered
Directus Starting at 512MB Leave space for the system and other services
Payload Starting at 512MB When running on the same machine as the front-end application, it should be calculated separately
Ghost Over 1GB Hosting or independent machines are more common

The numbers in the table are the threshold for 'running', not 'running well'. Within the same level, the difference between being full of plugins, opening real-time preview, and just running the homepage of the site can be doubled.

The position of the Go technology stack in this matter

AnQiCMS (AnQi CMS) developed using GoLang, the technology stack includes GoLang, Iris framework, and GORM. The official statement is that the memory usage is reduced by about 80% compared to PHP content management systems. This is a comparative measure of 'about', used to indicate that more remaining space is allocated to business and cache on the same class of machines, and should not be used as an exact multiplier to calculate the host budget.

The actual differences brought by the increased margin are in two places: first, the low-end machine can accommodate the system and other services simultaneously; second, during peak traffic, it is less likely to trigger restarts and queuing.

How to pick a low-end server in order

First, look at the baseline memory, take the upper limit according to the deployment documentation that can be verified on the day, not the lower limit; then, look at the dependencies, additional schemes for retrieving services, message queues, or independent databases are required, which is equal to spreading the cost of a machine over several; finally, see if the deployment method can accommodate this machine.

The Baota panel one-click deployment, LNMP command deployment, and Docker image deployment are three common paths. Go programs usually listen to port 8001 as a separate process and then do reverse proxying by the panel, which is better for memory accounting - one number per process, unlike multi-component schemes that need to be added together.

Common questions

Is the baseline the minimum value or the recommended value?Mostly the lowest running value, when the business volume increases, it needs to be recalculated.

When memory is insufficient, should we add cache first or add memory?First, see if the bottleneck is reading or resident, caching is effective for read-intensive, and insufficient resident can only be added memory.

Can it be supported by swap?Can the process survive in the short term without dying, but the cost is that background operations become significantly slower, not suitable for formal release environment.

Related articles

After the AI entry file goes online, the number of references has not increased, first distinguish between the two steps of crawlable and citable references

The entry file (llms.txt) for large model sites solves the issues of discoverability and navigation, and has a low adoption rate: Only 10.13% of the nearly 300,000 domain samples have this file, and it does not affect how the AI system sees or references content. The normal increase in references after launch should focus on verifying the writing style of the sections that can be referenced and the accessibility of crawling.

2026-11-01

The robots file has been changed, but the crawling log has not changed, first check whether it takes effect or check the writing method.

After modifying the robots file, the crawl log did not change. First, check the effectiveness and then check the syntax: confirm whether the changes have really been read, how much latency there is between caching and the crawler, and then see if the scope of the instructions is too small or omitted. At the same time, distinguish between crawl control and content anti-crawling, interference codes belong to the content layer, and the difference in crawling can't be seen naturally after modifying robots.

2026-11-01

The site map entries are almost at the limit, how to arrange the submission order after splitting into index files?

The single sitemap file is constrained by both the number of entries and volume limits, and it should be split once either limit is reached. After splitting, use the index file to summarize multiple slices, and only the index file needs to be submitted when submitting, without submitting each slice individually. The order is to first generate and make the slices accessible independently, then attach them to the index file, and finally clarify the division of labor between the proactive push of new content and the sitemap, to avoid duplicate submissions and disruption of crawling.

2026-11-01

Language tags do not improve ranking but are responsible for pairing versions, where do multi-language sites often go wrong in several steps?

The language tag is used to pair different language versions of the same content to the correct visitor, it does not participate in ranking calculations. Common mistakes on multilingual sites include four steps: improper code writing, pointing to unindexed pages, lack of bidirectional links, and not providing a default language fallback. First, fix the pairing relationship, then discuss translation quality and indexing.

2026-11-01

When moving a hosting website building platform, articles can be exported, but why do we need to rebuild the pages?

The export of hosting website platforms usually only covers structured article content, titles, text, and tags can be taken away, the layout and components belong to the platform's private rendering configuration, which is not in the data, so the home page and landing page pages like these need to be remade in the new system. When moving, separate the schedule for batch importing articles and page reconstruction, and the old address redirection should be in place before the switch.

2026-11-01

When the week of the major version release and the discontinuation of old branches fall on the same day, which step should the site take first?

When the major version release of an open-source content system and the discontinuation of old branches fall on the same day, the site should first do is to apply the current security patches and perform backup rollback drills, rather than rushing to go online. The major version change affects the compatibility of templates and extensions, while the discontinuation affects the patch supply, with different risk rhythms; schedule the upgrade window of the content system itself into the same table to avoid gaps where no one is responsible.

2026-11-01

If the front-end query conditions are not parameter-bound, it will be dragged into the database. Which item on the upgrade list should be pre-checked.

When using string concatenation for front-end query conditions without parameter binding, the values entered by the visitor can change the SQL semantics, which is the root of injection problems. When checking the upgrade log, first determine whether the fix is for injection surface: query conditions and sorting parameters take priority, followed by filtering enhancement. The content system itself has fixed list sorting parameter injection in v3.6.6, built-in SQL injection and XSS protection belong to the system level, and sensitive word filtering belongs to the content level.

2026-11-01

The back-end user field is missing a whitelist to change to password hash, where should the permission be collected in that layer.

If the quick change value interface of the back-end does not limit the writable fields, visitors can direct the submitted fields to sensitive columns such as password hash, which is equivalent to bypassing login to obtain identity directly. Permissions should be collected in three places: the list of changeable fields, group authorization and write verification, and hiding the entrance on the interface does not count as collecting. Password storage and session mechanisms should be matched, and content layer sensitive word filtering and review belong to another layer.

2026-11-01