Информация Обсуждение настроек VPS сервера для PrestaShop

спасибо. сразу что то не сообразил.
получил целый ряд повторных ошибок

Код:
Warning on line 78 in file /classes/cache/CacheXcache.php [2] xcache_set(): XCache var cache was not initialized properly. Check php log for actual reason
Warning: xcache_get(): XCache var cache was not initialized properly. Check php log for actual reason in /classes/cache/CacheXcache.php on line 36
Warning: xcache_set(): XCache var cache was not initialized properly. Check php log for actual reason in /classes/cache/CacheXcache.php on line 46
Warning: Cannot modify header information - headers already sent by (output started at /classes/cache/CacheXcache.php:46) in /classes/controller/FrontController.php on line 845
Warning: Cannot modify header information - headers already sent by (output started at /classes/cache/CacheXcache.php:46) in /classes/controller/FrontController.php on line 846
Warning: Cannot modify header information - headers already sent by (output started at /classes/cache/CacheXcache.php:46) in /classes/Tools.php on line 241

то что проблема в Xcache я уже догадался, но вот почему никак не пойму

CacheXcache.php:
PHP:
<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2015 PrestaShop SA
*  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/

/**
 * This class require Xcache extension
 *
 * @since 1.5.0
 */
class CacheXcacheCore extends Cache
{
    public function __construct()
    {
        $this->keys = xcache_get(self::KEYS_NAME);
        if (!is_array($this->keys))
            $this->keys = array();
    }

    /**
    * @see Cache::_set()
    */
    protected function _set($key, $value, $ttl = 0)
    {
        return xcache_set($key, $value, $ttl);
    }

    /**
    * @see Cache::_get()
    */
    protected function _get($key)
    {
        return xcache_isset($key) ? xcache_get($key) : false;
    }

    /**
    * @see Cache::_exists()
    */
    protected function _exists($key)
    {
        return xcache_isset($key);
    }

    /**
    * @see Cache::_delete()
    */
    protected function _delete($key)
    {
        return xcache_unset($key);
    }

    /**
    * @see Cache::_writeKeys()
    */
    protected function _writeKeys()
    {
        xcache_set(self::KEYS_NAME, $this->keys);
    }

    /**
    * @see Cache::flush()
    */
    public function flush()
    {
        $this->delete('*');
        return true;
    }
}
 
спасибо. сразу что то не сообразил.
получил целый ряд повторных ошибок

Код:
Warning on line 78 in file /classes/cache/CacheXcache.php [2] xcache_set(): XCache var cache was not initialized properly. Check php log for actual reason
Warning: xcache_get(): XCache var cache was not initialized properly. Check php log for actual reason in /classes/cache/CacheXcache.php on line 36
Warning: xcache_set(): XCache var cache was not initialized properly. Check php log for actual reason in /classes/cache/CacheXcache.php on line 46
Warning: Cannot modify header information - headers already sent by (output started at /classes/cache/CacheXcache.php:46) in /classes/controller/FrontController.php on line 845
Warning: Cannot modify header information - headers already sent by (output started at /classes/cache/CacheXcache.php:46) in /classes/controller/FrontController.php on line 846
Warning: Cannot modify header information - headers already sent by (output started at /classes/cache/CacheXcache.php:46) in /classes/Tools.php on line 241

то что проблема в Xcache я уже догадался, но вот почему никак не пойму

CacheXcache.php:
PHP:
<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2015 PrestaShop SA
*  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/

/**
* This class require Xcache extension
*
* @since 1.5.0
*/
class CacheXcacheCore extends Cache
{
    public function __construct()
    {
        $this->keys = xcache_get(self::KEYS_NAME);
        if (!is_array($this->keys))
            $this->keys = array();
    }

    /**
    * @see Cache::_set()
    */
    protected function _set($key, $value, $ttl = 0)
    {
        return xcache_set($key, $value, $ttl);
    }

    /**
    * @see Cache::_get()
    */
    protected function _get($key)
    {
        return xcache_isset($key) ? xcache_get($key) : false;
    }

    /**
    * @see Cache::_exists()
    */
    protected function _exists($key)
    {
        return xcache_isset($key);
    }

    /**
    * @see Cache::_delete()
    */
    protected function _delete($key)
    {
        return xcache_unset($key);
    }

    /**
    * @see Cache::_writeKeys()
    */
    protected function _writeKeys()
    {
        xcache_set(self::KEYS_NAME, $this->keys);
    }

    /**
    * @see Cache::flush()
    */
    public function flush()
    {
        $this->delete('*');
        return true;
    }
}
Не используйте егою желательно memcached или apc
 
спасибо за совет. есть хороший и подробный мануал на настройке memcached или apc. и что луче использовать из них на nginx+php-fmp?
также по Xcache. в админке отключил поддержку кеширования Xcache, но настройки модулей все равно не доступны. сделал "зеркало" проекта на апаче. там все ок. может есть смысл еще смотреть в сторону правил nginx?
 
спасибо за совет. есть хороший и подробный мануал на настройке memcached или apc. и что луче использовать из них на nginx+php-fmp?
также по Xcache. в админке отключил поддержку кеширования Xcache, но настройки модулей все равно не доступны. сделал "зеркало" проекта на апаче. там все ок. может есть смысл еще смотреть в сторону правил nginx?
Ошибка не ушла?
 
спасибо за совет. есть хороший и подробный мануал на настройке memcached или apc. и что луче использовать из них на nginx+php-fmp?
также по Xcache. в админке отключил поддержку кеширования Xcache, но настройки модулей все равно не доступны. сделал "зеркало" проекта на апаче. там все ок. может есть смысл еще смотреть в сторону правил nginx?

Как показывает сравнительное тестирование Для просмотра ссылки Войди или Зарегистрируйся и практика, особенно если версия PHP выше 5.4, то лучше использовать opcache Для просмотра ссылки Войди или Зарегистрируйся
 
Как показывает сравнительное тестирование Для просмотра ссылки Войди или Зарегистрируйся и практика, особенно если версия PHP выше 5.4, то лучше использовать opcache Для просмотра ссылки Войди или Зарегистрируйся
Он изначально включены в версиях старше 5.5
 
В версиях 5.5 включительно. Но я видел олдскульных ребят кто собирали apc под 5.5 несмотря ни на что.
А я видел ребят которые несмотря ни на что клепают собственные CMS инет-магов и более того еще свою систему статистики и счетчика используют вместо допустим Яндекс метрики той же )))
Вот сайт их веб-студии: Для просмотра ссылки Войди или Зарегистрируйся (забавная касатка)
Система их статистики: Для просмотра ссылки Войди или Зарегистрируйся
Пример их самописного инет-мага: Для просмотра ссылки Войди или Зарегистрируйся

Вот, что происходит когда пытаешься изобрести велосипед :)
Не, ну конечно всеравно респект им за такие труды... ...но опять же "изобрели велосипед" причем прошлого века похоже.
Больше чем уверен, что веб студию возглавляет какой-нить пожилой профессор в сфере IT технологий, который по своей совецкой натуре привык изобретать, изобретать - чтобы то вокруг не происходило ) А кто его знает... может он и создаст когда-нибудь иновацию, которая для нас станет тенденцией )
 
Теперь займемся конфигурацией apache, выполняем команду:
nano /etc/apache2/apache2.conf
Находим следующее:
Timeout 30
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 10

<IfModule mpm_prefork_module>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 200
MaxRequestsPerChild 4000
</IfModule>
и меняем на следующее: (данные параметры оптимально подходят для VPS с количеством памяти 256Mb)
Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 20

<IfModule mpm_prefork_module>
StartServers 3
MinSpareServers 3
MaxSpareServers 9
ServerLimit 256
MaxClients 100
MaxRequestsPerChild 3000
</IfModule>


Спасибо! Большую работу проделали.
А подскажите что нужно изменить если VPS 512 или 1024мб ?
 
Спасибо! Большую работу проделали.
А подскажите что нужно изменить если VPS 512 или 1024мб ?
Как и писали многие знающие люди, конечно VPS с памятью 256 Мб маловато для PrestaShop.
В процессе теста постоянно вылетала MySql (Maria DB) из-за нехватки памяти.
В данный момент я сам перешел на 512 Мб. В среднем жрется для оптимальной работы 300 Мб. (Это в условиях малопосещаемого сайта)
Будет время - актуализирую статью под новую конфу VPS!

Особых изменений я пока не проводил, и так все хорошо!
В данный момент на VPS 512 Мб с одним процессором, у меня следующая конфа, все работает хорошо, без сбоев:
Открываем для редактирования файл php.ini, командой:
Код:
nano /etc/php5/apache2/php.ini
Ищем следующие параметры и меняем на указанные значения:
(чтобы быстро найти нужное значение нажимаем: ctrl+w, вводим название и нажимаем enter)
Код:
max_execution_time =  180
upload_max_filesize = 64M
post_max_size = 64M
max_input_vars = 3500
max_input_vars нужен чтобы Преста не ругалась в панели админки – Локализация - Переводы

Конфиг apache не менял, оставил такой же как описан в статье.

Конфиг MySql (nano /etc/mysql/my.cnf:(
Код:
[client]
port=3306
socket=/var/run/mysqld/mysqld.sock

[mysqld_safe]
socket=/var/run/mysqld/mysqld.sock

[mysqld]
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
port=3306
basedir=/usr
datadir=/var/lib/mysql
tmpdir=/tmp
lc-messages-dir=/usr/share/mysql
symbolic-links=0
log_error=/var/log/mysql/error.log

skip-external-locking
key_buffer_size = 4M
max_allowed_packet = 16M
thread_cache_size = 16
table_open_cache = 250
sort_buffer_size = 1M
read_buffer_size = 256K
join_buffer_size = 2M
bulk_insert_buffer_size = 16M
tmp_table_size = 16M
max_heap_table_size = 16M
read_rnd_buffer_size = 512K
net_buffer_length = 8K
thread_stack = 256K

query_cache_size  = 10M
query_cache_limit = 2M
query_cache_type = ON

myisam_recover = BACKUP
myisam_sort_buffer_size = 8M
concurrent_insert = 2

innodb_file_per_table
innodb_buffer_pool_size = 8M
innodb_log_buffer_size = 8M
innodb_open_files = 200
innodb_io_capacity = 200
innodb_flush_method = O_DIRECT

max_connections = 50
connect_timeout = 5
max_user_connections = 20
wait_timeout = 30
interactive_timeout = 50
long_query_time = 5

Конфиг nginx тоже не менял, такой же как в статье

Так, что в целом особо изменений нет. Важный момент (который я потом актуализирую в статье) - 256 Мб оперативки мало, минимум 512 берите ;)

Ну а в целом, если памяти много, можно больше ее выделить под кэш. Увеличить количество одновременных соединений и т.п.
Если на VPS двух ядерный проц, тоже нужно будет внести изменения в конфигурационные файлы.
 
Последнее редактирование:
Назад
Сверху