Configure your Database
Configure your database feature is allowing you to manage the configuration of Neo4j as it is done via neo4j.conf file. Managing configuration settings through the database interface simplifies the overall configuration management experience. You can easily view, modify, and apply configuration changes using this feature, reducing the complexity associated with manual configuration file edits. Some of the configurations have a specific section, like Authentication, and there is a generic way to add any configuration that is whitelisted.
- Authentication
- Read-only mode
- Memory configuration
- Custom settings (such as transaction-timeout)
To change the Neo4j configuration for each of the mentioned options, navigate to your database Configuration tab.
⚠️ Important
For the changes to be applied, the database requires a restart.
Authentication
Authentication to the database is enabled by default, but it can be disabled. You can use this for example in case you lose your credentials and need access to manage users. To change this setting, click on the Disabled option > then Save button.
You’ll be able to see a confirmation window once the configuration is updated. If you want to enable it again, click on the Enabled option > Save button.
The Database needs to be restarted for changes to be applied. This will result in a short downtime, which will depend on the time that the process needs to stop and start your database.
This managed configuration will set up dbms.security.auth_enabled to true or false. We recommend authentication to be enabled for your databases, especially for production environments.
Read-only mode
When the read-only mode is enabled, no insertions, updates or deletions will be performed. It is disabled by default, and to enable it, select the Enabled option > then Save button.
You’ll be able to see a confirmation window once the configuration is updated. If you want to disable read-only mode, select Enabled > Save button.
If enabled read-only mode will be configured via neo4j.conf file and will set up dbms.databases.read_only to true.
The Database needs to be restarted for changes to be applied. This will result in a short downtime, which will depend on the time that the process needs to stop and start your database.
Memory
Your instance memory is assigned and used by different components:
Description | |
---|---|
Heap memory | The runtime data area from which memory for all class instances and arrays is allocated. |
Page cache | The page cache is used to cache the Neo4j data stored on disk. The caching of graph data and indexes into memory helps avoid costly disk access and result in optimal performance. |
Other memory used by Neo4j | This is the rest of memory that is needed for Neo4j to run correctly. |
OS memory | The memory that must be reserved for running the processes of the operating system itself. |
To simplify memory configuration to the user, GrapheneDB only allows changing heap memory for your database. The value for the page cache will be automatically calculated to use the remaining available memory.
GrapheneDB shows how the rest of the memory is distributed for the sake of transparency, but heap and page cache are the two important memory settings for you to consider.
The default heap is designed for your database to work correctly, but it’s allowed to reduce it in favor of increasing Page Cache, so that more data can fit into memory and reduce disk access.
If you are running a DS1 plan, memory can’t be adjusted, as the plan is already running with the minimum heap needed for Neo4j to work correctly. To see the details, please click on the Expand button in the Memory configuration section.
⚠️ Important
A bad memory configuration can have a dramatic impact on performance and even make your database unresponsive. Please make sure you know what you’re doing before you change these settings.
The Database needs to be restarted for changes to be applied. This will result in a short downtime, which will depend on the time that the process needs to stop and start your database.
Custom configuration
We allow you to add or update configuration that will end up in the neo4j.conf file. Entries need to be added one by one. If you want to enter 4 configurations, please go through this process 4 times and then restart your database, for the configuration to be applied.
To add these custom settings, you need to know exactly what configuration key and value you want to add to the conf file. Take into account that there is a Whitelist and not everything can be added or updated. Only configuration keys that are whitelisted will be allowed. You will get an error if you don’t enter a key that is in our whitelist.
⚠️ Important
- If your plugin necessitates outbound traffic, for example, the APOC procedure to send data to an external ES server, you will be required to include the server’s IP address in your Environment’s IP Whitelist.
- Another option is to establish a peering connection with the external server.
- If neither of these alternatives is feasible, you will need to whitelist all IP addresses, meaning that you’ll need to add 0.0.0.0/0 to the Environment’s Whitelist.
What is Whitelisted?
Plugins
apoc.* (APOC)
gds.* (GDS Plugin)
com.* (Unmanaged extensions)
graphaware.* (GraphAware plugins)
elasticsearch.* (Elasticsearch plugin)
Database
dbms.transactional.timeout (Transactional timeout.)
dbms.lock.acquisition.timeout (This terminates a transaction exceeding the timeout while acquiring a lock.)
dbms.memory.transaction.total.max (Controls the limit for the amount of memory that all transactions in one database can consume, in bytes. If exceeded the transaction will fail.)
It is possible to configure Neo4j to terminate transactions whose execution time has exceeded the configured timeout. There is a minimum and a maximum for transaction timeout that depends on your plan. To prevent issues with long running requests, we have chosen ranges that make sense with the resources of each plan.
Plan | Min | Max |
---|---|---|
DS1 | 1s | 5min |
DS2 | 1s | 5min |
DS3 | 1s | 5min |
DS4 | 1s | 15min |
DS5 and higher | 1s | 45min |
If you have additional requirements on whitelisting, please open a Support Case, and we’ll evaluate adding your request to the whitelist.
Add custom configuration
Once you are in the Configuration tab, navigate to the Database Custom configuration section at the bottom > expand it > click on + Add new configuration button.
The new screen will appear, where you’ll need to enter a Configuration Key and Configuration Value. You can choose to encrypt the value by selecting the checkbox. We want to make sure to encrypt just secrets, thus there is a limit of 7 values that you can encrypt.
- enter the Configuration Key for which you want to map the configuration setting to a value.
- enter the Configuration Value as per Neo4j requirements. The limit of digits to be used for the value is 9 digits, for example, 300000000s (dbms.transaction.timeout).
The example of a custom configuration would be the enabling of apoc triggers. In this case, you would add apoc.trigger.enabled in the Configuration key field, and add true in the Configuration value field. Once done, please click on Confirm button.
You can also edit the existing custom configuration by clicking on the pen icon on the right-hand side of that config.
You can always find a history of the actions executed on this database if you navigate to the Activity Feed of this database.
ℹ️ Info
- Make sure to test the configurations before changing your production deployment.
- The new config line might result in the database not starting correctly. If that’s the case you can delete the added line and restart again.
The Database needs to be restarted for changes to be applied. This will result in a short downtime, which will depend on the time that the process needs to stop and start your database.