Рабочий процесс IIS с помощью БОЛЬШОЙ памяти?

Массивы в PHP - это своеобразные вещи: их можно использовать в качестве списков, очередей, словарей, множеств, упорядоченных словарей и всевозможных других многозначных структур. Однако большинство функций написаны с учетом одной или двух из этих структур.

В случае array_reduce, массив обрабатывается как список - упорядоченная коллекция элементов. Таким образом, ключи массива не передаются обратному вызову. Это имеет смысл для общих случаев, таких как вычисление итога или среднего и т. Д.

Несомненно, есть случаи, когда вы хотите уменьшить упорядоченный словарь пар ключ-значение; к сожалению, PHP не предоставляет для этого функции.

С другой стороны, есть две связанные функции, которые могут быть использованы вместо:

  • array_map, который выполняет обратный вызов для каждого элемента и создает новый массив с одним элементом вывода для элемент ввода
  • array_walk, который запускает обратный вызов для каждого элемента и игнорирует результат, но может принимать третий параметр по ссылке, где могут накапливаться побочные эффекты

Все три функции также могут быть тривиально реализованы с помощью цикла foreach, так что вы можете написать свою собственную функцию reduce примерно так ( untested ):

function array_reduce_assoc(array $array, callable $callback, $initial=null) {
    $carry = $initial;
    foreach ( $array as $key => $value ) {
        $carry = $callback($carry, $key, $value);
    }
}
15
задан splattne 29 October 2008 в 10:06
поделиться

6 ответов

Я проверил бы Настраивающий Раздел CLR в документ упомянутый Gulzar.

Как другие плакаты, на которые указывают, любой объект, который реализует IDispose должен иметь Dispose() обращенный это, когда это закончено с, предпочтительно с помощью using создать.

Разжечь perfmon.exe и добавьте эти счетчики:

  • Байты Process\Private
  • .NET CLR Байты Memory# во всей "куче"
  • Набор Process\Working
  • .NET CLR размер "кучи" Объекта Memory\Large

Увеличение частных Байтов, в то время как число Байтов во всем счетчике "кучи" остается тем же, указывает на неуправляемое потребление памяти.

Увеличение обоих счетчиков указывает на потребление управляемой памяти

13
ответ дан 1 December 2019 в 03:35
поделиться

проверьте раздел по поиску и устранению неисправностей узких мест памяти в Настройке Производительности приложения.NET

5
ответ дан 1 December 2019 в 03:35
поделиться

Если у Вас есть доступ к исходному коду, можно хотеть проверить, что на любые объекты, которые реализуют IDisposable, ссылаются внутри using операторы или быть правильно избавленным, когда Вы сделаны с ними.

Using конструкция C#, но основная идея состоит в том, что Вы освобождаете ресурсы, когда Вы сделаны.

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

1
ответ дан 1 December 2019 в 03:35
поделиться

Больше деталей определенно помогло бы. Сколько приложений запускает в пуле приложений? Есть ли в пуле приложения ASP.NET?

Если Вы выполняете ASP.NET, бросаете хороший взгляд на то, что Вы храните в переменных кэша и сессии. Используйте PerfMon для проверки, сколько Поколения 0, происходят 1 и 2 набора. Опасайтесь хранить элементы UI в состоянии сеанса или кэше, так как это предотвратит весь экземпляр страницы и всех детей экземпляра страницы от того, чтобы быть собранным также. Наконец, проверьте, чтобы видеть, делаете ли Вы большую конкатенацию строк. Это может вызвать много объектных инстанцирований, так как строки.NET неизменны. Изучите использование StringBuilder вместо этого.

1
ответ дан 1 December 2019 в 03:35
поделиться

Создайте мини-дамп процесса w3wp и используйте WinDbg для наблюдения, какие объекты находятся в памяти. Это - то, что делает служба поддержки IIS в Microsoft каждый раз, когда они получают вопросы как это.

1
ответ дан 1 December 2019 в 03:35
поделиться

Поскольку другие люди отметили, что частой причиной этой проблемы является утечка ресурса, также существует известная проблема с win2k3 сервером и IIS6 KB916984

0
ответ дан 1 December 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: