friendica/mods/performance-improvements.txt
2013-10-05 14:23:40 +02:00

193 lines
5.5 KiB
Text

A little guide to increase the performance of a friendica site
**************************************************************
At first
========
Feel freee to ask the friendica support at
<https://helpers.pyxis.uberspace.de/profile/helpers> if you need some
clarification about the following instruction or if you need help in any
other way.
System configuration
====================
Please go to /admin/site/ on your system and change the following values:
* Set "JPEG image quality" to 50.
This value reduces the data that is send from the server to the client.
50 is a value that doesn't influences image qualitity too much.
* Set "OStatus conversation completion interval" to "never".
if you are having many OStatus contacts then completing of conversations
can be very time wasting. The downside: You won't see any answer in
OStatus conversations.
* Set "Path for lock file" to an empty folder outside your web root.
Lock files help avoiding the situation that several background processes
run at the same time.
For example: It can happen the the poller.php is working longer than
expected. When there would be no lock file than maybe several instances
of poller.php would run at the same time - which would slow down the
systen and would affect the maximum numbers of processes and database
conenctions.
Please define a full file path that is writeable by the web server
process. If your site would be located at "/var/www/sitename/htdocs/"
you maybe could create a folder "/var/www/sitename/temp/".
* Enable "Use MySQL full text engine"
When using MyISAM (default) this speeds up the search.
* Set "Path to item cache" to an empty value outside your web root.
Parsed BBCode and some external images will be put there. Parsing BBCode
is a timewasting process that also uses much CPU speed.
You can use the same folder like you used for the lock file.
---------
!Warning!
---------
The folder for the item cache is cleaned up regularly. Every file that
exceedes the cache duration is deleted. If you accidently would point
the cache path to your web root then you would delete your webroot!
So ensure twice that the folder only contains temporary content that can
be deleted at any time.
You have been warned.
P.S. It happened to me :)
Plugins
=======
Active the following plugins:
* Alternate Pagination
* Privacy Image Cache
* rendertime
Alternate Pagination
--------------------
Description:
This plugin reduces the database load massively. Downside: You can't see
anymore the number of pages.
Administration:
Go to the admin settings of "altpager" and set it to "global".
Privacy Image Cache
-------------------
Description:
This plugin is prefetching external content and stores it into the
cache. Besides speeding up the page rendering it is also good for
keeping the privacy of your users, since embedded pictures would be
loaded from your site and not from a foreign site (that could spy on the
IP addresses).
Additionally it helps with content from external sites that are having a
slow performance or that are aren't online all the time.
Administration:
Please create a folder named "privacy_image_cache" and "photo" in
your web root. If these folders exists then the cached files will be
stored there. This has the great advantage that your webserver will
fetch the files directly from there.
rendertime
----------
This plugin doesn't speed up your system. It helps analysing your
bottlenecks.
When enabled you see some values like the following at the bottom of
every page:
Performance: Database: 0.244, Network: 0.002, Rendering: 0.044, Parser: 0.001, I/O: 0.021, Other: 0.237, Total: 0.548
* Database: This is the time for all database queries
* Network: Time that is needed to fetch content from external sites
* Rendering: Time for theme rendering
* Parser: The time that the BBCode parser needed to create the output
* I/O: Time for local file access
* Others: Everything else :)
* Total: The sum of all above values
These values are showing your performance problems.
Webserver
=========
If you are using apache pease enable the following modules.
Cache-Control
-------------
This module tells the client to cache the content of static files so
that they aren't fetched with every request.
Enable the module "mod_expires" by typing in "a2enmod expires" as root.
Please add the following lines to your site config in the "directory"
context.
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 week"
</IfModule>
See also: http://httpd.apache.org/docs/2.2/mod/mod_expires.html
Compress content
----------------
This module compresses the traffic between the webserver and the client.
Enable the module "mod_deflate" by typing in "a2enmod deflate" as root.
See also: http://httpd.apache.org/docs/2.2/mod/mod_deflate.html
PHP
===
FCGI
----
When using apache think about using FCGI. When using a Debian based
distribution you will need the packages named "php5-cgi" and "
libapache2-mod-fcgid".
Please refer to external documentations for a more detaillied
explanation how to set up a system based upon FCGI.
APC
---
APC is an opcode cache. It speeds up the processing of PHP code.
When APC is enabled, friendica uses it to store configuration data
between different requests. This helps speeding up the page creation
time.
Database
========
There are scripts like tuning-primer.sh <http://www.day32.com/MySQL/>
and mysqltuner.pl <http://mysqltuner.pl> that analyse your database
server and that are giving hints on values that could be changed.
Please enable the slow query log. This helps being aware of performance
problems.