%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/main/lang/en/admin/checklist/ |
Current File : //home/bitrix/www/bitrix/modules/main/lang/en/admin/checklist/QC0070.html |
<p>Once the development of a custom component has been completed, it is recommended to perform the stress test using real-life amount of test data. This will make the whole web project more robust and prevent performance deterioration.</p> <p>To optimize memory consumption by a component, use the PHP functions "memory_get_usage" and "memory_get_peak_usage". The crucial point is to determine the maximum memory your component may allocate. If the component happens to allocate all of the memory available to the website, the client page request will inevitably fail.</p> <p>The following coding and algorithmic errors are the most frequent reasons for excessive memory consumption.</p> <ul> <li>The component stores database query results in PHP arrays. As the database contains more and more data, the PHP arrays may also get larger over time which eventually lead to memory exception when the component attempts to allocate enough memory to save the database selection result. Restrict memory allocation size by changing the query parameters (which is better) or by using temporary tables or files if no other solution can be applied.</li> <li>The component merges numerous API call results. In fact, this is similar to sending the JOIN query to the database - but the component attempts to do the same in memory. Instead, use the built-in information block methods for joining the database selections. For even better flexibility, you can create and use custom database tables using Bitrix Framework API.</li> <li>The component tries to load a huge file in memory. Instead, always read files in chunks.</li> <li>The component performs massive complex math calculations which increases CPU usage. It is recommended to use a separate thread for such calculations or cache the calculation results.</li> </ul> <p>Unfortunately, it is customary for developers to ignore these issues: they just increase the maximum memory limit to 512 MB or even more, which undermines the website robustness and decreases performance. The best practice is just the opposite: decrease the memory limit to 64 MB (according to Bitrix Framework requirements) and do your best to make your code work.</p> <ol> <li>Ensure these recommendations have been put into practice when developing custom components for the website.</li> <li>Look through the PHP error log with the website's administrator - once after performing the stress test and then on a weekly basis until you find and eliminate all errors.</li> </ol>