Alto consumo CPU e memória noderunner.exe – SharePoint 2013

February 1, 2018 Leave a comment

CENÁRIO:

Olá!

Apesar de ter montando uma máquina virtual de desenvolvimento com um hardware razoável (gastar menos $$) sofri com consumo excessivo de CPU e memória em um servidor com SharePoint 2013, SQL Server 2008 R2 e Visual Studio 2017 instalado.

ERRO:

Não é um erro, mas é um comportamento pesado para um ambiente de desenvolvimento.

Picture1

SOLUÇÃO:

Analisando um pouco o comportamento do servidor para descobrir o “vilão” da jogada… notei que o processo “noderunner.exe” estava consumindo muita memória e CPU considerável.

Picture2

Noderunner.exe é um componente do serviço de busca do SharePoint 2013.

Para ambientes de Dev, podemos reduzir o consumo desse serviço. Principalmente se não estamos usando a busca do SharePoint 2013 no desenvolvimento. Inclusive, desabilitar o serviço.

No caso, eu precisava de um “pouco” de busca… :/

Então, utilizei os passos a seguir para reduzir o impacto da busca no consumo de recursos do servidor.

  1. Rode o cmdlet Powershell abaixo para reduzir o consumo de CPU

Set-SPEnterpriseSearchService -PerformanceLevel Reduced

  1. Altere o parâmetro “memoryLimitMegabytes” do arquivo “exe.config”. Por padrão, a configuração é “0” – ilimitado.

C:\Program Files\Microsoft Office Servers\15.0\Search\Runtime\1.0\noderunner.exe.config

Picture3

  1. Reinicie o serviço de busca do SharePoint com o cmdlet a seguir

Restart-Service SPSearchHostController

Picture4

Agora o servidor ganhou “algum” fôlego.

Informações adicionais: https://docs.microsoft.com/en-us/powershell/module/sharepoint-server/Set-SPEnterpriseSearchService?view=sharepoint-ps

Reduced: Total number of threads = number of processors, Max Threads/host = number of processors

Partly Reduced: Total number of threads = 4 times the number of processors , Max Threads/host = 16 time the number of processors

Maximum: Total number of threads = number of processors

Abraço!

 

Advertisements

Cadê o telnet que tava aqui?!

January 24, 2018 Leave a comment

Depois de muito enrolar (foi lançado em Setembro/2017 – Link), resolvi fazer o upgrade do sistema operacional do meu Mac para o High Sierra (10.13.3).

E algumas coisas pararam de funcionar… como meu .Net Core SDK 1.1. Mas com a ajuda do Romanão que já tinha feito o upgrade… vi que era só atualizar/instalar o .Net Core SDK 1.1 novamente que ele voltaria a funcionar e funcionou! 🙂

Nas atividades corriqueiras do dia-a-dia precisei verificar a conectividade com uma aplicação e vamos ao primeiro teste de conectividade:

[16:00:39] – [Thiago ~]$ telnet

-bash: telnet: command not found

WTF?! command not found?!

https://discussions.apple.com/thread/8103628 – Foi removido mesmo.

Mas, ainda tem o telnet no homebrew! Ufa!

Eu já tinha o homebrew, mas se você precisar instalar, é só rodar esse comando:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Outras informações sobre o homebrew: https://brew.sh/index_pt-br.html

Com o ele, podemos instalar o telnet com o seguinte comando:

brew install telnet

Abraço!

Could not load file or assembly Microsoft.VisualStudio.Shell.15.0

January 11, 2018 Leave a comment

CENÁRIO:

Montando o pipeline de Build e Release automático de um projeto SharePoint Add-in (SharePoint App – SharePoint Online 365) descobri que não tem um template de tarefa de build no Visual Studio Online (VSTS).

Então, parti para construir a tarefa de build vazia (Empty) onde colocamos os comandos para realizar o build.

Eis que ao tentar dar build usando o msbuild.exe me deparo com um erro bem estranho.

ERRO:

“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SharePointTools\Microsoft.VisualStudio.SharePoint.targets(395,5): Error : Could not load file or assembly ‘Microsoft.VisualStudio.Shell.15.0, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The system cannot find the file specified.”

SOLUÇÃO:

Depois de algumas (muitas) pesquisas descobri que é necessário adicionar referências no projeto para fazer o build com sucesso. Passos para resolver:

  1. Adicionar um arquivo “Microsoft.VisualStudio.SharePoint.AddAssemblySearchPaths.targets” na raiz do seu projeto (conteúdo do arquivo mais abaixo)
  2. Adicionar “<Import Project=”Microsoft.VisualStudio.SharePoint.AddAssemblySearchPaths.targets” />” no arquivo .csproj para importar o arquivo adicionado.
  3. Pronto, agora é build com sucesso! 😉

Conteúdo do arquivo “Microsoft.VisualStudio.SharePoint.AddAssemblySearchPaths.targets”:

<Project xmlns=’http://schemas.microsoft.com/developer/msbuild/2003&#8242; >

  <UsingTask TaskName=”AddAssemblySearchPath” TaskFactory=”CodeTaskFactory” AssemblyFile=”$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll”>

    <ParameterGroup>

      <SearchPath ParameterType=”System.String” Required=”true” />

    </ParameterGroup>

    <Task>

      <Using Namespace=”System” />

      <Using Namespace=”System.IO” />

      <Using Namespace=”System.Reflection” />

      <Code Type=”Fragment” Language=”cs”>

        <![CDATA[

AppDomain.CurrentDomain.AssemblyResolve += (sender, e) =>

{

  string assemblySearchPath = Path.Combine(SearchPath, e.Name.Split(‘,’)[0] + “.dll”);

  if (File.Exists(assemblySearchPath)) return Assembly.LoadFrom(assemblySearchPath);

  return null;

};

]]>

      </Code>

    </Task>

  </UsingTask>

  <Target Name=”addAssemblySearchPaths”>

    <AddAssemblySearchPath SearchPath=”$(MSBuildExtensionsPath)\..\Common7\IDE\PrivateAssemblies\” />

    <AddAssemblySearchPath SearchPath=”$(MSBuildExtensionsPath)\..\Common7\IDE\PublicAssemblies\” />

  </Target>

</Project>

Também adicionei o arquivo para download aqui: https://1drv.ms/u/s!Ass2zQvJNjQNguMdQGn53ziBBweFBg

Para resolver essa zica, contei com a ajuda do super http://diegomarques.azurewebsites.net/.

Abraço!

Setup is unable to proceed to the following error(s)

November 24, 2017 Leave a comment

CENÁRIO:

Hoje precisei instalar um VM SharePoint 2013 para fazer um robô de migração/exportação de dados para uma outra aplicação.

Ao instalar o SharePoint 2013 SP1 no Windows Server 2012 R2, logo de cara, me deparo com erro ao instalar os pré-requisitos solicitando .NET 4.5… que já estava instalado no servidor.

ERRO:

Setup is unable to proceed to the following error(s):

This Product requires Microsoft .Net Framework 4.5

framework

SOLUÇÃO:

Depois de algumas pesquisas vi que a MS já lançou um KB para contornar esse problema, onde você irá baixar uma nova DLL e substituir nos arquivos de instalação.

https://support.microsoft.com/en-us/help/3087184/sharepoint-2013-or-project-server-2013-setup-error-if-the–net-framewo

Links para download da nova DLL do instalador:

Abraço!

Debug adapter process has terminated unexpectedly VS Code

November 15, 2017 Leave a comment

CENÁRIO:

Na vida usando, e usando muito, o Visual Studio Code com projeto .NET Core, fui debugar meu projeto… mas deu erro 😥

Deu erro pra DEBUGAR?! WFT?!

Pra quem quiser começar a experimentar o Visual Studio Code: https://code.visualstudio.com/

Estou bem satisfeito usando no Mac OS. É muito rápido! Sublime virou só bloco de notas mesmo. Rs

ERRO:

Debug adapter process has terminated unexpectedly

SOLUÇÃO:

Fechei e abri o VS Code e reiniciei o Mac (depois de várias semanas, mas é preciso) e nada resolveu.

Pesquisando um pouco, descobri que tem um console do Visual Studio Code que não é o habitual da “IDE”, onde estava procurando por erros:

Picture1

Mas nada de mensagem de erro nesses console.

Então, descobri este outro console “F12” do Visual Studio Code:

Help > Toggle Developer Tools

Picture2

Neste console havia um erro informando que não conseguia achar o “c# extension asset”. Então, pra resolver, desinstalei e instalei novamente o C# Extension do Visual Studio Code.

Picture3

Com isso, ele reinstalou o debugger e tudo voltou a funcionar! J

Abraço!

Rodando MSSQL Server on Linux no Mac usando Docker

CENÁRIO:

Depois de instalar o .NET Core, agora fazer uns “programa” que lê uns arquivos… acessa banco de dados… Hum, acessar banco? Vamos instalar o SQL Server on Linux! 😀

Se você perdeu a parte do .NET Core, ta aqui:

https://thiagottss.com.br/2017/05/07/instalando-net-core-no-mac-usando-docker/

Me surpreendi com a facilidade e agilidade de utilizar os containers “prontos” no Docker. Muito bom mesmo.

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-docker

Vamos lá!

Primeiro, vamos puxar a imagem no Docker Hub da Microsoft:

docker pull microsoft/mssql-server-linux

clip_image002

Agora, instalar/rodar o container:

docker run -e ‘ACCEPT_EULA=Y’ -e ‘SA_PASSWORD=<YourStrong!Passw0rd>’ -p 1433:1433 -d microsoft/mssql-server-linux

clip_image004

Pronto! Você já está com o MSSQL Server on Linux rodando no Docker.

Agora é conectar e rodar seus comandos no SQL Server. Utilize o Management Studio para conectar no SQL do Docker, ou se preferir, ainda no Mac, pode usar o sql-cli para conectar. Ou utilizar o Visual Studio Code também! J

Para instalar o sql-cli você precisa do Node.js:

https://github.com/creationix/nvm

Instalar o sql-cli:

npm install -g sql-cli

Com o sql-cli:

Mssql –help

clip_image006

mssql –u sa –p senha

clip_image008

Com o Visual Studio Code:

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-develop-use-vscode

clip_image010

Abraço!

Instalando .Net Core no MAC usando Docker

May 7, 2017 1 comment

CENÁRIO:

Sempre utilizei o Visual Studio para todas as atividades de código, mas desde que a Microsoft lançou .NET Core e Visual Studio Code procurei testar e rodar alguns códigos diretamente no Mac OS.

Ainda acho o Visual Studio muito mais produtivo e mais completo, mas devemos sempre nos manter atualizados com as novas tecnologias.

De início, instalar o .Net Core CLI diretamente no Mac OS, mas agora vou mostrar como instalar o .Net Core no Docker!

Ainda utilizo bem pouco o Docker, mas tenho gostado bastante de ter containers para realizar algumas atividades sem precisar instalar coisas no sistema operacional.

Vamos lá!

Primeiro instale o Docker, caso ainda não o tenha:

https://www.docker.com/docker-mac

Instalar o .NET Core via Docker é muito simples!

https://www.microsoft.com/net/core#dockercmd

docker run -it microsoft/dotnet:latest

Esse comando irá baixar e instalar o .Net Core container diretamente do Docker Hub da Microsoft.

Uma vez instalado e rodando, você já estará dentro do container e pode rodar alguns comandos do .NET Core. Tente alguns:

Dotnet –version

image

dotnet –info

image

Exit

image

Até aqui eu fui bem tranquilo, mas e agora se eu quiser voltar para o contexto do container?

Demorei um pouco lendo a documentação do Docker, mas encontrei 2 modos de voltar ao contexto do container. Mas antes, utilize o Kitematic para verificar as configurações e nomes dos seus containers.

clip_image002

clip_image004

Você pode iniciar o container pelo Kitematic e/ou utilizar o comando:

image

Para entrar no contexto do container:

Docker attach netcore

image

O comando attach permite que entre no contexto do terminal que você está, mas se abrir um novo terminal.. não será possível. Então utilize este outro comando para entrar no contexto em qualquer terminal:

Docker exec –i –t netcore /bin/bash

image

E é isso, agora você tem o .NET Core rodando no Mac utilizando Docker.

Abraço!