Сайт замедляется для отдельных пользователей, но они могут переключать браузеры? - PullRequest
8 голосов
/ 09 ноября 2009

Я пытался найти это, но это довольно сложно выразить словами.

По сути, наш сайт будет работать нормально для большинства пользователей без каких-либо проблем. Иногда, однако, те из нас, кто использует сайт довольно интенсивно весь день, внезапно оказываются полностью увязшими Все просто вращается на месте. Сам сайт все еще в порядке - все остальные могут все еще добраться до него, но отдельный пользователь застрял. Фактически, перезапуск браузера полностью не решает проблему, даже если вы явно удалили свои куки.

Тем не менее, вы можете просто нормально открыть сайт, переключившись на другой браузер. Если вы увязли в Firefox, вы обычно можете открыть его и продолжить нормально работать в IE. Это может происходить обоими способами (вы можете отключить IE, и переключение на Firefox работает).

Имеет ли это какой-либо смысл? Как будто что-то ломается с сеансом, но я не знаю, что могло бы вызвать это, и сеанс должен быть сброшен, перезапустив браузер и очистив куки и еще много чего.

Есть идеи?

[Правка для уточнения, извините, должна была включить это для начала] Сервер - это очень простой стек LAMP в RedHat с Apache 2.2.3, PHP 5.2.11, MySQL 5.0.45 (мы рассматривали возможность обновления MySQL, но я не думаю, что это проблема здесь). Это стандартная конфигурация для Rackspace, поэтому я не думаю, что мы делаем что-то экзотическое, кроме, возможно, Zend Optimizer.

Мы используем много javascript / jquery, но все это довольно стандартные вещи, и я не ожидаю, что утечка памяти не повлияет на другой браузер, хотя я могу ошибаться.

Кроме того, использование процессора и памяти нашего сервера никогда не нарушало запас в 25%, даже в пиках, и пики, похоже, не коррелируют с этим явлением.

Ответы [ 6 ]

2 голосов
/ 09 ноября 2009

Звучит так, будто у вас есть какая-то проблема с блокировкой сессии. Вы утверждаете, что даже удаление файлов cookie не помогает, из-за чего блокировки сеансов кажутся менее правдоподобными, но я не располагаю подробной информацией о вашей реализации, поэтому это все еще возможно.

У меня есть два вопроса, на которые мне нужно было бы ответить, чтобы получить представление о проблеме.

  1. Открыта ли сессия при потоковой передаче контента и при попытке чтения или записи в сеанс по другому запросу?

  2. Вы реализовали свои собственные сеансы?

Если вы отвечаете «да» или «возможно» на вопрос 1, это, вероятно, корень вашей проблемы.

Если вы отвечаете «да» на вопрос два, сохраняется ли проблема, если вы переключаете управление сессиями на стандартный php? У вас может быть ошибка в обработке вашего сеанса.

1 голос
/ 09 ноября 2009

G'day,

Похоже, вы сохраняете какую-то информацию на стороне сервера для каждого сеанса.

Вы сохраняете идентификаторы сеансов или идентификаторы пользователей на сервере? Может быть, добавлять все больше и больше информации к некоторым постоянным данным с каждым последующим входящим запросом?

Может быть, входящая строка User Agent также задействована, поэтому изменение типов браузера работает, когда просто перезапуск сеанса в том же браузере не работает?

Видели ли вы, останавливая и возобновляя сеанс через временную границу, например, час или полночь, при использовании того же браузера тоже сбрасывает проблему? Возможно, попробуйте подменить строку UA, чтобы проверить, не устраняет ли это проблему.

Кстати, какие модули Apache вы используете на своем сервере? Также 2.2.3 - довольно старая версия, вы рассматривали возможность обновления?

0 голосов
/ 11 ноября 2009

Утечки памяти, вызванные JavaScript, влияют на браузер, потому что все это на стороне клиента. Сжатие Jquery или мин. Вы не можете быть уверены в том, где проблема, и это может быть причиной проблемы или сценарием, использующим ее.

0 голосов
/ 11 ноября 2009

Это тоже случалось со мной, часто, на самом деле. Сайт полностью без состояния, множество запросов AJAX, через некоторое время сайт просто перестает отвечать на запросы. Это особенно раздражает во время отладки. Вот некоторые вещи, которые вы должны знать:

  • Количество загруженных файлов JS (включая те, которые вы получаете, используя запросы скриптов) (вероятно, вам следует удалить теги скриптов, созданные при использовании этого метода)
  • Количество CSS-файлов (например, в IE жесткий предел составляет 31, я думаю)
  • Иногда браузер может заблокировать запрос разрешения DNS
  • Некоторые браузеры имеют ограничения на количество запросов к доменам (в IE их 2), поэтому, если запрос не выполнен, всем остальным в этом домене придется ждать

Все это, конечно, не объясняет, почему оно продолжает зависать после перезапуска того же браузера - хотя вы не упомянули очистку кеша, так что, возможно, имеется сбойный запрос, который находится в кеш-памяти вашего браузера или некотором промежуточном кеш-памяти или прокси, так что вы можете попытаться проверить, произойдет ли это, если вы полностью отключите кеширование в своем браузере. (В Firefox это легко сделать, например, с помощью панели инструментов веб-разработчика.)

Вы также должны увидеть, какие запросы зависают, используйте Fiddler и Firebug, чтобы увидеть это.

0 голосов
/ 11 ноября 2009

Интересно, что никто не предложил рекламные объявления в качестве причины ( Ответ Назария можно было бы принять тем, кто ).

В основном проверьте рекламу, показанную на вашем сайте, в этих вещах есть куча дерьма, и они всегда основаны на распознавании пользователя, что объясняет, почему перезапуск браузера не помогает.

0 голосов
/ 10 ноября 2009

Мне кажется, что это Утечки памяти , которые создает ваш javascript. Проверьте список процессов и посмотрите, сколько памяти занимает браузер в начале и после получаса просмотра и перезагрузки вашего сайта. Если, если потребление памяти значительно больше, чем предполагалось, это означает, что вам необходимо просмотреть свой код JavaScript для любых невозвращенных методов, неразорванных циклов и так далее. Обычно это помогает.

...