Jenkins自動化部署報Failed to get socket connection from

 Failed to get socket connection from UnityShaderCompiler.exe shader compiler

在使用jenkins對Unity進行自動打包部署時,遇到了上面的問題。從搜索結果來看,是因爲jenkins需要爲用到的exe開啓進程,來收集錯誤和日誌,當jenkins創建的進程數超出了限制,會導致進程開啓失敗,導致jenkins的打包流程失敗。

解決辦法就是增加系統可開啓的進程數,操作如下

  1. Backup your registry before making any changes!

  2. Run regedit.exe as administrator

  3. Edit the registry value:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows
    
  4. You will see a string like:

    %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,768 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16
    

可以看到如下信息

SharedSection=1024,20480,768

解決辦法就是講第三個數值768改成2048,當然增加這個值的缺點就是會導致系統消耗的增加。修改完畢後需要重啓電腦生效!

參考: https://stackoverflow.com/questions/17472389/how-to-increase-the-maximum-number-of-child-processes-that-can-be-spawned-by-a-w/17472390#17472390

另外還有一個jenkins自己的解決方案,沒看懂,有看懂的可以試一下:https://wiki.jenkins.io/display/JENKINS/Spawning+processes+from+build

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章