Citrix e WPF, janela azul

1

Estamos criando aplicativos do WPF que serão implantados no Citrix. Atualmente, você simplesmente vê uma janela azul sob o Citrix, embora o aplicativo seja executado corretamente no próprio servidor.

Parece haver algumas questões detalhadas na rede.

discussão no fórum da Citrix

Correção instantânea da Microsoft

Aplicamos o hot fix, mas isso não parece resolver o problema para nós, pelo menos.

Além disso, encontrei essa pergunta idêntica neste site, mas ela foi removida pelo autor, portanto, não há respostas.

I'm running citrix 4.5 on a Windows 2003 server. I am trying to publish a WPF app (any WPF app has this problem) and all I get is a blue rectangle where the app is supposed to be. The rectangle is the exact size and shape of the window I expect, but it is just blue (looks like the color of the citrix desktop background). Any ideas?

    
por Ian 13.10.2011 / 12:25

2 respostas

1

Esta é uma pergunta muito antiga, mas tive o mesmo problema.

Eu não sei porque, mas quando eu tenho dois monitores Citrix mostra apenas uma janela azul para qualquer coisa WPF. Eu resolvi desconectando um dos monitores, o que por algum motivo fez a Citrix mostrar o WPF corretamente.

Meu colega executa exatamente a mesma configuração que eu, exceto que nossos segundos monitores são de marcas diferentes. Sua configuração funciona bem com os dois monitores.

Estamos executando o .Net 4.0 no Citrix com o XP.

    
por 01.11.2012 / 10:29
0

Eu não encontrei o problema sozinho, mas tivemos uma redução de profundidade de cor em clientes de tela dupla, devido ao maior uso de memória para gráficos de sessão.

Talvez a tela azul seja um artefato estranho da degradação automática, que a Citrix entrará em ação quando você exceder o limite de gráficos da sua sessão?

Não tenho certeza sobre o MetaFrame XP, mas pelo que me lembro, o máximo que você pode configurar para o limite de gráficos da sessão é de 8.192 kb. Qual é o seu cenário?

O que fizemos

Aumentamos nosso limite para 16 MB por meio do valor do registro MaxLVBMem , para podermos executar com profundidade de cor de 24 bits, mesmo com monitores duplos de 1920x1080.

HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd\thin16
MaxLVBMem (REG_DWORD) = 0x1000000 (16777216 dec)

Também aumentamos o SessionViewSize de 20 para 32:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
SessionViewSize (REG_DWORD) = 0x20 (32 dec)

Por fim, aumentamos SessionPoolSize do padrão de 32 MB (em sistemas com > 2 GB de RAM) para 48 MB:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
SessionPoolSize (REG_DWORD) = 0x30 (48 dec)

Conforme declarado no Microsoft KB840342:

MaxLVBMem should ideally consume no more than 35 to 40 percent of a system’s allocated SessionPoolSize. If more than 40 percent of SessionPoolSize would be consumed by the desired MaxLVBMem, adjust the SessionPoolSize parameter upward

E:

Microsoft recommends raising this setting by increments of 16 megabytes. Increasing the SessionPoolSize parameter above 80 megabytes is not recommended.

Se MaxLVBMem (definido como 16 MB) consumir no máximo 35-40% de SessionPoolSize, isso deve ser pelo menos 46 MB. Isso é feito aumentando o valor do padrão de 32 MB para 48 MB.

Editar:

Mas, como indicado no artigo da Microsoft, você terá que encontrar o equilíbrio para o seu ambiente. Um aumento de 16 MB de 32 MB para 48 MB pode não ser suficiente para resolver seu problema. No entanto, aumentando muito o valor e você corre o risco de esgotar seus pools de memória.

If you allocate more memory to increase the desktop heap, you may reduce the memory that allocated by the Terminal server to other resources, such as nonpaged pool, paged pool, and system cache. This will affect the performance of the Terminal server. Also, when more memory is allocated to the SessionViewSize and SessionPoolSize entries, the memory allocated to map the kernel virtual space will be reduced. This in turn may make the Terminal server to support only a limited number of users.

Dito isso, atualmente vemos indicações de que um SessionPoolSize de 48 MB pode não ser suficiente para nosso ambiente, então provavelmente testarei com 64 MB.

Assegure-se de monitorar seus pools de memória e liberar PTE do sistema antes e depois da alteração: -)

Referências

Ao ler novamente os artigos da base de dados de referência, o KB840342 da Microsoft soa como a primeira coisa que eu tentaria no seu caso.

    
por 11.12.2012 / 04:01

Tags