Цитата:
Сообщение от
Kabardian
На виртуальной машине (5GB оперативной) установлена AX 2012 R3 CU8, компиляция длилась около 9-10 часов с 6 сессиями
Памяти маловато для 2012 R3, те же перекрестные ссылки, думаю, могут вообще не построиться.
Цитата:
Сообщение от
Kabardian
последние 1-2 часа компиляция шла крайне медленно и загрузка CPU снизилась до 0, только SQL грузил процессор на 25%. В итоге, на 4-м проходе, в одной из сессий появилась ошибка: Cannot execute a stored procedure. Deadlock, where one or more users have simultaneously locked the whoe table or part of it.
Надо оптимизировать использование памяти. Во-первых, может, это и очевидно, но все же: на время компиляции с использованием AXBuild имеет смысл останавливать службу AOS. Она для мгногопоточной компиляции абсолютно не нужна - только память впустую отжирает. Затем надо умерить аппетиты SQL Server, выставив ему maximum server memory в какое-нить вменяемое значение (скажем, 1 Гб), и, вероятно, отключить эскалацию блокировок. Это - опасный шаг, который может приводить к ошибкам при выполнении запросов, если окажется, что для запроса нужна блокировка, а памяти на нее у SQL Server уже не осталось, но в данном случае стоит рискнуть. См. также
SQL Server Trace Flags for Dynamics AX
SQL Server Lock Escalation and Blocking
В-третьих, надо очень аккуратно рассчитывать число потоков компиляции исходя из доступной памяти. По моим наблюдениям, на 2-м проходе AOS'ы, выполняющие компиляцию, отъедают чуть больше 0.5 Гб private working set, причем чем их меньше, тем больше памяти потребляет каждый. Таким образом, для 6-и потоков должно быть доступно как минимум 3 Гб, а если на виртуалку отведено всего 5, при этом их делят винды, SQL Server и AOS'ы, то нужно явно ограничивать хотелки SQL Server, чтобы 6 AOS'ов могли нормально доработать. Иначе они начнут отваливаться из-за недостатка памяти, AXBuild начнет ругаться, что у него отваливаются "ноги" (legs)
и в итоге компиляция преждевременно завершится с ошибкой.
В общем, я бы лично попробовал выделить виртуалке, скажем, 6-6.5 Гб из 8-и доступных (если компиляция идет на ноуте с 8 Гб памяти) - хотя бы на время компиляции.