You might see "fatal exception" or "out of memory" messages from the Acrolinx Platform now and again. You'll see these when a container tries to use more than the configured resource limit. This can occur when you try to import large volumes of terminology data, for example. If you want to avoid this, you can adjust your resource limits.
You can configure resource limits for the following:
-
core-server
-
analytics-server
-
language-server
You can adjust the spec.valuesContent
section of the acrolinx.yaml
file to override the default memory and CPU limits for all of your containers. Just use the spec.containerCustomizations
field to customize the resource assignments by container name. To see example configurations for each server, read on.
Note
To make sure that everything works as expected, it's helpful to know that the assigned memory gets split between the server and other memory areas. 77% of the memory goes to the server itself, and 23% goes to the virtual machine that runs the server.
If you wanted to assign the core server a total of 8 GB of memory, for example, you'd use the following configuration:
spec: valuesContent: |- platform: spec: containerCustomization: - name: core-server resources: limits: memory: 8Gi
An analytics server configured with a total of 6 GB of memory might look like this:
spec: valuesContent: |- platform: spec: containerCustomization: - name: analytics-server resources: limits: memory: 6Gi
Language servers process checks according to their resource limits. A number of factors in a document determine the processing workload of the language server:
Factor |
Explanation |
---|---|
The amount of checked text |
The checked text is the raw text sent to the server after the XML tags have been stripped out. A document with a large file size could have a high proportion of XML code. This means that the size of the raw text sent to the language server is actually quite small in comparison to the overall file size. Conversely, if a document has large blocks of text and minimal XML code, it could take longer to process despite a smaller file size. |
The number of issues highlighted in the document |
A significant part of the workload for the language server involves rendering highlighted information into XML. The integrations use this information to highlight the text and generate reports. If a document has a minimal number of issues, it's easy for the language server to process a large document. If a large document also has a higher proportion of highlighted issues, you might see an error. To prevent issues with large documents, you can change the memory allocated to the language server. |
Maximum memory |
This is the maximum amount of memory that the language server can consume at any given time. This shouldn’t be greater than the actual capacity of your hardware. |
To see the size limit for each language server in the Dashboard, go to: Servers > Language Server [language ID] > General information > Maximum accepted document size. This shows you the number of extracted characters this language server can accept in a single check.
Your standard language server configuration might look something like the following:
platform: spec: languageServers: - name: default languages: [ en, de, ja, fr ] template: containers: - name: language-server resources: limits: memory: 6Gi
You can also configure memory assignment by group for language servers. All servers in a group share the same configuration. If you need more than one size of language server, you can add more groups.
The following example shows a group configuration of large
language servers. They get 6 GB of memory and will load the en
language configuration.
platform: spec: languageServers: - name: default languages: [ en, de, ja, fr ] - name: large languages: [ en ] template: containers: - name: language-server resources: limits: memory: 6Gi
Note
Remember to apply configuration changes to your cluster. To do this, you can use:
kubectl apply -f acrolinx.yaml