Sam Mamuric
Sam Mamuric

Reputation: 31

Joomla loads 10 sec + with Nginx and PHP-FPM

I've been trying to troubleshoot my test website based on Joomla for a week now but whenever I try to nearly complete my website the next morning it crawls to 10 sec or more loading time.

I have used the built in Chrome "Inspect Element" and results are disappointing: 10sec +

The Annoying thing is I have migrated it to my local XAMPP setup in my Laptop the loading time is 2.86 sec only compared to the 10 sec + loading time.

Now it led me to conclude that the culprit lies around the nginx and php-fpm is not on the Joomla source code

Now I am concerned about my configurations of PHP and nginx.

Here is my Nginx configuration without the location block:

user                                    www-data www-data;
pid                                     /var/run/nginx.pid;
worker_processes                        8;
worker_rlimit_nofile                    100000;

events {
    worker_connections                  16384;
    multi_accept                        on;
    use                                 epoll;  
        include                         /etc/nginx.custom.events.d/*.conf;
}

http {
        default_type                    application/octet-stream;

        access_log                      off;
        error_log                       /var/log/nginx/error.log crit;

        sendfile                        on;
        tcp_nopush                      on;
        tcp_nodelay                     on;

    fastcgi_read_timeout                300; 

        keepalive_timeout               60;
        client_header_timeout           60;
        client_body_timeout             60;
        reset_timedout_connection       on;
        send_timeout                    60;

    client_header_buffer_size           1k;
    client_max_body_size                128m;
    large_client_header_buffers         4 32k;

        types_hash_max_size             2048;

        gzip                            on;
        gzip_disable                    "MSIE [1-6]\.";
    gzip_static                         on;     
    gzip_proxied                        expired no-cache no-store private auth;
        gzip_min_length                 1100;
        gzip_comp_level                 2;
        gzip_types                      text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;

        server_names_hash_bucket_size   128;

        include                         mime.conf;
        charset                         UTF-8;

        open_file_cache                 max=100000 inactive=20s;
        open_file_cache_valid           30s;
        open_file_cache_min_uses        2;
        open_file_cache_errors          on;

        server_tokens                   off;

        include                         proxy.conf;
        include                         fcgi.conf;

        include                         conf.d/*.conf;
        include                         /etc/nginx.custom.d/*.conf;
}

include                                 /etc/nginx.custom.global.d/*.conf;

This is my php-fpm setting:

[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = Off
zlib.output_compression = On
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 300
max_input_time = -1
max_input_vars = 10000
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 20M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 25M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 300
[CLI Server]
cli_server.color = On
[Date]
[filter]
[iconv]
[intl]
[sqlite]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = On
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 0
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatibility_mode = Off
mssql.secure_connection = Off

[Assertion]
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]
[opcache]
opcache.enable=1
opcache.memory_consumption=1024
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=100000
opcache.revalidate_freq=60
[curl]

PS: this my 3rd site built from scratch please help me!

Upvotes: 3

Views: 517

Answers (1)

itoctopus
itoctopus

Reputation: 4261

If it's taking 2.7 seconds to load on your local XAMPP, then that is not good! I think the problem lies within your Joomla website and not within your environment. Have you checked your slow query log to see if there are any slow queries being generated? Have you tried debugging your Joomla application to see where the bottleneck is? Your website should load in less than a second otherwise it will crash under normal load.

Upvotes: 1

Related Questions