PHP, MySQL / MariaDB settings
PHP settings in php.ini
Recommended values in php.ini summary :
memory_limit = 256M ; could be increased if needed max_input_vars = 5000 ; upload_tmp_dir : should point to a directory with write access ; also check those options for attachments (se dedicated chapter below) ; adapt values depending of your preferences! ; - upload_max_filesize ; - max_file_uploads ; - post_max_size ; - max_input_time
On various use cases iTop send large amount of data to the server. Especially some XHR queries sends a description of the current object structure : list of attributes and all corresponding properties. If your datamodel adds lots of attributes on an object, you can get wrong behavior on one of those screens :
when editing objects with many relations (iTop creates one big form containing all the relations)
in a object list :
when ordering the list by clicking on a column header
after checking lots of attributes in the “configure this list” dialog
Such behavior can be caused by the webserver : the parameter
defines the maximum size of data sent to the server. Its default
value is 1000, which might not be sufficient for such customized
objects with many fields. If you get such behavior, you can update
max_input_vars value from 1000 to 3000 or 5000
depending on the volume needed to be transferred.
iTop is capable of uploading and storing documents (i.e files) as attachments to various objects (Tickets, CIs…). These documents are stored as binary blobs in the iTop database. In order to to safely upload and store documents, several settings must be adjusted consistently across PHP and MySQL.
In PHP, several variables govern the upload of files:
|file_uploads||Set to 1 to allow file upload, to zero to prevent all file uploads.|
|upload_tmp_dir||The temporary location (on the server) were the uploaded files will be stored. Make sure that this parameter points to a location that is accessible (and writable) by the process running the web server (or by the end users in case of IIS with the Windows built-in authentication) and that there is enough space left.|
|upload_max_filesize||The maximum size allowed for an uploaded file. The value is expressed in bytes. You can use units like K for kilobytes (=1024 bytes), M for megabytes and G for gigabytes. Example: 4M stands for 4 megabytes.|
|max_file_uploads||The maximum number of files that can be uploaded simultaneously in a single web page. iTop should normally upload only one file at a time. You can safely use the default value, which is 20.|
|post_max_size||The maximum amount of data that can be sent to the server via a POST request. This value MUST BE bigger than upload_max_filesize, since the same request will contain some more information (the title of the document, an operation code…). So it’s better to put a bigger value here. For example, if upload_max_filesize is 4M, then put 5M for post_max_size.|
|memory_limit||After being uploaded on the server, the file will be read in memory before being stored in the database. Therefore make sure that memory_limit (if enabled) is far bigger than upload_max_filesize.|
|max_input_time||This value defines the maximum time allowed for the server to read its input. This includes the time spent uploading the files. The default of 60 seconds may be exceeded for uploading big files over slow connections.|
MySQL / MariaDB recommandations
innodb_buffer_pool_size = 512M query_cache_size = 32M query_cache_limit = 1M innodb_default_row_format = DYNAMIC innodb_large_prefix = true ; max_allowed_packet : should be set to a value bigger than upload_max_filesize in php.ini
innodb_log_file_sizemust be at least 10 times bigger than
[ERROR] InnoDB: The total blob data length (35174918) is greater than 10% of the total redo log size (268435456). Please increase total redo log size.
As of iTop 2.5, the charset used is utf8mb4 with utf8mb4_general_ci collation. To allow iTop to correctly handle strings, the following requirements must be met :
MySQL version 5.5.3 or newer
innodb_default_row_format variable set to DYNAMIC (default value) or COMPRESSED
innodb_large_prefix set to true
The uploaded files are stored into the MySQL database, each file in one query. Therefore the maximum size allowed for a query MUST BE BIGGER than the maximum size of the uploaded file. This is configured via the variable max_allowed_packet in the my.cnf configuration file (on the MySQL server).