Hledám borce na Windows server 2016



Zdravím, hledám někoho zkušeného se znalostí windows server 2016, který by byl ochotný pomoc nastavit/nasměrovat kde hledat pomoc s následujícím problémem.Máme pořízený server (intel xeon, 64gb ram, 2x GeForce GTX 1070 apod) s Windows server 2016 včetně 5 CAL licencí. na serveru má běžet program na se kterým budou pracovat současně 3 lidé (program umožňují vícenásobné spuštění), ale problémy při připojení pomocí vzdálené ke vzdálené ploše na server jsou:1) program se nechce spustit kvůli OpenGL 3.0, vzteká se grafická karta není kompatibilní (jsou tam ty GeForce tak nevim o co jde) - při připojení přes VNC se program spustí, ale VNC nereflektuje rozlišení monitoru vs rozlišení plochy na serveru2) při práci v požadovaném programu (který se spustil přes VNC) je odezva práce frustrující přes vzdálenou plochu, obraz laguje a nedá se tak pracovat.Je mi jasné že je vše jenom o správném nastavení, bohužel náš IT guy neí v tomhle úplně zběhlý.Mohl by mi prosím někdo pomoc a poradit, popřípadě navrhnout jinou alternativu práce na serveru? Předem děkuju za odpovědi.
Špatné naplánování , terminálový přístup k MS serveru od MS nepodporuje akcelerovanou grafiku v patřičné normě
Príčin může být spousta a zrejme to nebude mit souvislost z Duolingem. Zkuste se poptat nekde na forech, kde se resi hardwarove zalezitosti. <p>pokud chcete přesměrovat připojení x přes ssh, musíte jej povolit na straně serveru i klienta. (v závislosti na distribuci může být ve výchozím nastavení povoleno nebo zakázáno.) na straně serveru se ujistěte, že máte <code>x11forwarding yes</code> v <a href="http://www.freebsd.org/cgi/man.cgi?query=sshd\_config&amp;sektion=5"><code>/etc/sshd\_config</code></a> (nebo <code>/etc/ssh/sshd\_config</code> nebo kdekoli je konfigurační soubor). na straně klienta předejte možnost <code>-x</code> <a href="http://www.freebsd.org/cgi/man.cgi?query=ssh&amp;sektion=1"><code>ssh</code> příkaz</a> , nebo vložte do svého <a href="http://www.freebsd.org/cgi/man.cgi?query=ssh\_config&amp;sektion=5"><code>forwardx11</code> <code>~/.ssh/config</code></a> .</p><p>pokud spustíte <code>ssh -x localhost</code>, měli byste vidět, že <code>$display</code> je (pravděpodobně) <code>localhost:10.0</code>. kontrast s <code>:0.0</code>, což je hodnota, když nejste připojeni přes ssh. (část <code>.0</code> může být vynechána; je to číslo obrazovky, ale více obrazovek se používá zřídka.) existují dvě formy x displejů, s nimiž se pravděpodobně setkáte:</p><ul> <li>místní displeje, s ničím před <code>:</code>.</li> <li>zobrazí se tcp s názvem hostitele před <code>:</code>.</li> </ul><p>s <code>ssh -x localhost</code> můžete přistupovat k x serveru přes obě displeje, ale aplikace budou používat jinou metodu: <code>:number</code> přistupuje k serveru prostřednictvím lokálních soketů a sdílené paměti, zatímco <code>hostname:number</code> přistupuje k serveru přes tcp, což je pomalejší a deaktivuje některá rozšíření.</p><p>nezapomeňte, že pro přístup k serveru x potřebujete formu autorizace nazvanou cookie a obvykle uloženou za scénami v souboru <code>~/.xauthority</code>. pokud používáte ssh pro přístup k jinému uživatelskému účtu nebo pokud vaše distribuce umístí soubory cookie do jiného souboru, možná zjistíte, že <code>display=:0</code> nefunguje v relaci ssh (ale <code>ssh -x</code>, pokud je to povoleno na serveru; při provádění <code>ssh -x</code> nemusíte nikdy mluvit s <code>xauthority</code>. pokud se jedná o problém, musíte <a href="https://unix.stackexchange.com/questions/10121/ssh-display-variable/10126#10126">nastavit proměnnou prostředí <code>xauthority</code></a> nebo <a href="https://unix.stackexchange.com/questions/1596/can-i-launch-a-graphical-program-on-another-users-desktop-as-root/1600#1600">získat soubory cookie jiného uživatele</a> .</p><p>chcete-li odpovědět na aktuální otázku:</p><ul> <li> <p>místní displeje odpovídají soketu v <code>/tmp/.x11-unix</code>.</p> <pre><code>(cd /tmp/.x11-unix &amp;&amp; for x in x*; do echo ":${x#x}"; done) </code></pre></li> <li> <p>vzdálené displeje odpovídají otevřeným tcp portům nad 6000; přístup k zobrazovacímu číslu n na počítači m se provádí připojením k portu tcp 6000 + n na počítači m. ze samotného stroje m:</p> <pre><code>netstat -lnt | awk ' sub(/.*:/,"",$4) &amp;&amp; $4 &gt;= 6000 &amp;&amp; $4 &lt; 6100 { print ($1 == "tcp6" ? "ip6-localhost:" : "localhost:") ($4 - 6000) }' </code></pre> <p>(zbytek této odrážky je pouze v akademickém zájmu.)</p> <p>z jiného počítače můžete pomocí <code>nmap -p 6000-6099 host\_name</code> zkoušet otevřené tcp porty v obvyklém rozsahu. dnes je vzácné, že x servery poslouchají na soketu tcp, zejména mimo rozhraní zpětného smyčky.</p> <p>přesně řečeno, jiná aplikace by mohla používat port v rozsahu obvykle používaném x servery. můžete zjistit, zda server x poslouchá kontrolou toho, který program má port otevřený.</p> <pre><code>lsof -i -n | awk '$9 ~ /:60[0-9][0-9]$/ {print}' </code></pre> <p>pokud se ukáže něco dvojznačného, ​​jako je <code>sshd</code>, neexistuje žádný způsob, jak zjistit, zda se jedná o server x nebo náhoda.</p> </li> </ul> <p><strong> poznámka: </strong> <em>toto bylo testováno na notebooku s grafickou kartou řízenou i915.</em></p><hr><h3>pozadí</h3><p><strong> poznámka: </strong> když je připojena nová obrazovka, do hostitele není odeslána žádná událost, zůstane to pravda i po mé poslední úpravě. jediným způsobem je tedy použít dotazování. snažím se, aby byly co nejefektivnější ...</p><h3>úprava # 3</h3><p>nakonec existuje jedno lepší řešení (prostřednictvím acpi):</p><p>stále neexistuje žádná událost, ale acpi se zdá být efektivnější než <code>xrandr</code> na dotaz. (poznámka: toto <strong> vyžaduje </strong> načtené moduly jádra acpi, ale nevyžaduje oprávnění root.</p><p>moje konečné řešení (pomocí bash):</p><pre><code>isvgaconnected() { local crtstate read -a &lt; /proc/acpi/video/vid/crt0/state crtstate test $(( ( ${crtstate[1]} &gt;&gt;4 ) ${1:+*-1+1} )) -ne 0 } </code></pre><p>nyní test:</p><pre><code>$ if isvgaconnected; then echo yes; else echo no; fi yes </code></pre><p>je zapojen, takže ho nyní odpojím:</p><pre><code>$ if isvgaconnected; then echo yes; else echo no; fi no </code></pre><p><strong> poznámka: </strong> <code>${1:+*-1+1}</code> povolit argument <em>boolean</em>: pokud <em>něco je přítomno</em>, odpověď by byla obrácena: <code>( crtstate &gt;&gt; 4 ) * -1 + 1</code>.</p><p>a závěrečný skript:</p><pre><code>#!/bin/bash export crtprocentry=/proc/acpi/video/vid/crt0/state isvgaconnected() { local crtstate read -a &lt; $crtprocentry crtstate test $(( ( ${crtstate[1]} &gt;&gt;4 ) ${1:+*-1+1} )) -ne 0 } delay=.1 unset switch isvgaconnected || switch=not while :;do while isvgaconnected $switch;do sleep $delay done if [ "$switch" ];then unset switch echo vga is connected # doing something while vga is connected else switch=not echo vga is not connected. # doing something else, maybe. fi done </code></pre><p><strong> upozornění: </strong> <em>lehčí než <code>xrandr</code>, ale ne nevýznamné</em> se zpožděním menším než <em>,02</em> sekund, bash skript půjde na začátek procesu jedlíci zdrojů (<code>top</code>)!</p><p>i když to stojí ~ 0,001 s:</p><pre><code>$ time read -a &lt;/proc/stat crtstat </code></pre><p>vyžaduje to ~ 0,030 s:</p><pre><code>$ read -a &lt; /proc/acpi/video/vid/crt0/state crtstate </code></pre><p>to je velké! takže v závislosti na tom, co potřebujete, lze <code>delay</code> rozumně nastavit mezi <code>0.5</code> a <code>2</code>.</p><h3>úprava # 2</h3><p>nakonec jsem něco našel:</p><p><strong> důležité vyloučení odpovědnosti: </strong> hraní s <code>/proc</code> a <code>/sys</code> záznamy mohou poškodit váš systém !!! takže na produkčních systémech nezkoušejte následující.</p><pre><code>mapfile watchfilelist &lt; &lt;( find /sys /proc -type f 2&gt;/dev/null | grep -i acpi\\\|i91 ) prompt=("/" "|" '\' '-'); l=0 while :; do mapfile watchstat &lt; &lt;( grep -h . ${watchfilelist[@]} 2&gt;/dev/null ) for ((i=0;i&lt;=${#watchstat[@]};i++)); do [ "${watchstat[i]}" == "${oldstat[i]}" ] || echo ${watchstat[i]} done oldstat=("${watchstat[@]}") sleep .5 printf "\r%s\r" ${prompt[l++]} [ $l -eq 4 ]&amp;&amp;l=0 done </code></pre><p>... po očištění nežádoucích záznamů:</p><pre><code>for ((i=0;i&lt;=${#watchfilelist[@]};i++)); do [[ "${watchfilelist[$i]}" =~ /sys/firmware/acpi/interrupts/sci ]] &amp;&amp; unset watchfilelist[$i] &amp;&amp; echo $i done </code></pre><p>to jsem dokázal přečíst:</p><pre><code>/proc/acpi/video/vid/crt0/state:state: 0x1d /proc/acpi/video/vid/crt0/state:state: 0x0d /proc/acpi/video/vid/crt0/state:state: 0x1d </code></pre><p>když připojím, odpojte a znovu zapojte kabel monitoru.</p><p>při dotazu na konfiguraci (spuštění <code>system/preferences/monitor</code> nebo <code>xrandr</code>), grafické karty udělají typ <em>scan</em>, takže běží <code>xrandr -q</code> vám dá informace, ale musíte zjistit stav.</p><p>prohledal jsem všechny protokoly (jádro, démona, x atd.) prohledávajícím <code>/proc</code> &amp; <code>/sys</code> a zjevně se zdá, že neexistuje nic, co by vyhovovalo vaší žádosti.</p><p>zkusil jsem to také:</p><pre><code>export spc50="$(printf "%50s" "")" watch -n1 ' find /proc/acpi/video -type f | xargs grep -h . | sed "s/^\([^:]*):/\1'$spc50'}:/; s/^\(.\{50\}\) *:/\1 /"' </code></pre><p>po tom všem, když spustíte <code>system/preferences/monitor</code> zatímco nebyla připojena žádná nová obrazovka ani odpojena, bude se nástroj zobrazovat jednoduše (normálně). ale pokud jste již dříve připojili nebo odpojili obrazovku, občas spustíte tento nástroj a uvidíte, že na ploše vytvoříte typ <em>reset</em> ​​nebo <em>obnovit</em> ​​(stejný pokud spustíte <code>xrandr</code>).</p><p>zdá se, že to potvrzuje, že tento nástroj požádá o <code>xrandr</code> (nebo pracuje stejným způsobem) pravidelným dotazováním na stav, počínaje okamžikem jeho spuštění.</p><p>můžete vyzkoušet sami:</p><pre><code>$ for ((i=10;i--;)); do xrandr -q | grep ' connected' | wc -l; sleep 1; done 1 1 1 2 2 2 1 1 1 1 </code></pre><p>tím se na 10 sekund zobrazí počet připojených obrazovek (displejů).</p><p>zatímco to běží, připojte a/nebo odpojte obrazovku/monitor a podívejte se, co se děje. takže byste mohli vytvořit malou testovací funkci bash:</p><pre><code>isvgaconnected() { local xrandr=$(xrandr -q) [ "$xrandr" == "${xrandr#*vga1 con}" ] || return 0 return 1 } </code></pre><p>který by byl použitelný jako v:</p><pre><code>$ if isvgaconnected; then echo yes; fi </code></pre><p>ale buďte opatrní, <code>xrandr</code> trvá asi <strong> 0,140 s do 0.200 s </strong>, zatímco na zástrčkách nedojde k žádné změně a do <strong> 0,770 sekund </strong> kdykoli něco bylo připojeno nebo odpojeno těsně před (<strong> poznámka: </strong> zdá se, že to není zdrojový zdroj).</p><h3>úprava # 1</h3><p>abych zajistil, že neučím něco nesprávného, ​​prohledával jsem web a dokumenty, ale nenašel jsem nic o <em>dbus and screens</em>.</p><p>nakonec jsem běžel ve dvou různých oknech <code>dbus-monitor --system</code> (hrál jsem také s možnostmi) a malý skript, který jsem napsal:</p><pre><code>$ for ((i=1000;i--;)); do isvgaconnected &amp;&amp; echo yes || echo no; sleep .5; done </code></pre><p>... a znovu zapojen, než odpojen monitor, mnohokrát. takže teď mohu říci:</p><ul> <li><em>v této konfiguraci <strong> pomocí ovladače i915 </strong> neexistuje jiný způsob, než spustit <code>xrandr -q</code> vědět, zda je monitor připojen nebo ne.</em></li> </ul><p>ale buďte opatrní, protože se nejeví jiné způsoby. například se zdá, že <code>xrandr</code> tyto informace sdílí, takže moje plocha gnome by se automaticky přepnula na <code>xinerama</code> automaticky ... <strong>, když jsem běžel <code>xrandr</code> </strong>.</p><h3>některé dokumenty</h3><ul> <li> <a href="https://wiki.archlinux.org/index.php/xrandr#toggle\_external\_monitor">skript pro přepínání interního/externího displeje pro notebooky</a> </li> <li> <a href="http://www.x.org/docs/intel/hd/ihd\_os\_vol\_3\_part4\_bjs.pdf">®intel hd graphics opensource programmer's reference manual</a> </li> </ul> <p><code>hi</code> je čas strávený přerušením zpracování hardwaru. hardwarová přerušení jsou generována hardwarovými zařízeními (síťové karty, řadič klávesnice, externí časovač, hardwarové senzory, ...), když potřebují něco signalizovat do procesoru (například data dorazila).</p><p>protože k tomu může dojít velmi často a protože v podstatě blokují aktuální cpu, zatímco jsou spuštěny, jsou popisovače hardwarového přerušení jádra psány tak rychle, jak je to jen možné.</p><p>pokud je třeba provést dlouhé nebo složité zpracování, jsou tyto úkoly odloženy pomocí mechanického volání <code>softirqs</code>. jsou naplánovány nezávisle, mohou běžet na jakémkoli cpu, mohou běžet souběžně (nic z toho neplatí pro popisovače přerušení hardwaru).</p><p><sub>část o tvrdých irq blokujících aktuální procesor a část o tom, že <code>softirqs</code> budou moci běžet kdekoli, nejsou úplně správné, mohou existovat omezení a některé tvrdé irq mohou přerušit jiné.</sub></p><p>jako příklad lze uvést, že hardwarové přerušení ze síťové karty „přijatá data“ by mohlo jednoduše uložit informace „karta ethx musí být obsluhována“ a naplánovat <code>softirq</code>. <code>softirq</code> by byla věc, která spouští skutečné směrování paketů.</p><p><code>si</code> představuje čas strávený v těchto <code>softirqs</code>.</p><p>dobré čtení o mechanismu <code>softirq</code> (s trochou historie) je také <a href="https://www.cs.unca.edu/brock/classes/spring2013/csci331/notes/paper-1130.pdf">dělám to později: softirqs, tasklets, dolní poloviny, fronty úkolů, pracovní fronty a časovače</a> = (pdf, 64 kb).</p><p><code>st</code>, „ukrást čas“, je relevantní pouze ve virtualizovaných prostředích. představuje čas, kdy skutečný procesor nebyl k dispozici aktuálnímu virtuálnímu počítači - byl „odcizen“ z toho vm) hypervizorem (buď pro spuštění jiného vm, nebo pro vlastní potřeby).</p><p>dokument <a href="https://www.ibm.com/developerworks/linux/linux390/perf/tuning\_cputimes.html">cpu time accounting</a> od ibm obsahuje více informací o krádeži času a účetnictví cpu ve virtualizovaných prostředích. (zaměřuje se na hardware typu zseries, ale obecná myšlenka je stejná pro většinu platforem.)</p> <p>od <a href="http://forums.microsoft.com/technet/showpost.aspx?postid=3825120&amp;siteid=17">podpora společnosti microsoft</a> přes fóra společnosti microsoft:</p><blockquote> <p>další šetření zjistí, že se jedná o očekávané chování aplikace visio 2007. pokud aplikace visio otevře připojení pomocí ovladače serveru visio sql server zkontroluje verzi serveru a protože sql server 2008 dodáno po aplikaci visio 2007 nerozpozná sql server 2008 jako podporovanou verzi a zavře spojení. počkejte na budoucí verzi aplikace visio na loď, která rozpoznává sql server 2008 nebo použijte ovladač visio generic odbc, který může úspěšně otevřít připojení k serveru sql server 2008. třetí možností je použít kopii serveru sql server 2005 pro počáteční reverzní inženýrství. tým visio si je vědom tohoto problému.</p> </blockquote> <p>pro postgresql může být výkon procesoru velmi důležitý, zejména pokud do paměti ram zapadá poměrně vysoké procento aktivní pracovní sady vašich dat. většina databází, se kterými jsem pracoval, měla většinu času cpu jako hlavní překážku. (právě jsem zkontroloval vmstat na serveru hostujícím webové stránky s miliony přístupů denně, které hostovaly více než 5 tb databázového prostoru, a nikdy jsem neviděl více než 2% času čekání na disk, ale viděl jsem vrchol 12% času cpu uživatele.)</p><p>protože postgresql je založeno na procesech, každý jednotlivý proces může běžet jen tak rychle jako jedno jádro, ale ve směsi, jako máme na výše uvedeném serveru, s velkým objemem malých požadavků, je nejdůležitější celkový procesor ve všech jádrech. při stejném celkovém výkonu procesoru bude postgresql obecně pracovat lépe s menším počtem rychlejších jader než s mnoha pomalejšími jádry.</p><p>až do mezipaměti vysokého procenta aktivní sady dat je přidání ram obvykle pro buck zobrazí větší třesk než přidání jader. po dostatečném ukládání do mezipaměti je výhodou další ram klesá a máte lepší podporu při zvyšování výkonu procesoru).</p><p>pro více informací o tomto tématu, které se týká postgresql, si nemyslím, že existuje lepší zdroj než <a href="http://www.postgresql.org/docs/books/"><em> postgresql 9.0 vysoký výkon</em></a> od <strong> greg smith </strong>. (úplné zveřejnění, byl jsem technickým recenzentem knihy, ale nezískávám na základě prodeje žádné finanční výhody.)</p> <p>ano. stačí spustit <code>export display=:0</code> (nebo cokoli, co je vzdálené zobrazení očíslováno jako) ve vaší ssh relaci a spuštěné programy se spustí na vzdáleném displeji. rychlý příklad:</p><pre><code>oli@bert:~$ ssh tim oli@tim:~$ export display=:0 oli@tim:~$ firefox </code></pre><p>firefox nyní běží na displeji <code>tim</code>.</p><p>když však ukončíte relaci ssh, po většinu času se vzdálená aplikace ukončí. pokud se chcete odpojit od ssh, ale nechat aplikaci spuštěnou, musíte ji spustit speciálním způsobem pomocí něco jako obrazovka (udržuje relaci ssh běžící na pozadí) nebo <code>nohup</code>, nebo jinou metodou. pro více informací o tomto <a href="https://askubuntu.com/questions/10547/how-to-clean-launch-a-gui-app-via-the-terminal-so-it-doesnt-wait-for-terminatio">tam byla nedávno jiná otázka</a> .</p><p>to vše můžete zkrátit na jediný příkaz, který se připojí, exportuje zobrazení do řádku a spouští aplikaci způsobem, který ji nezavře po smrti relace ssh:</p><pre><code>ssh tim "display=:0 nohup firefox" </code></pre> <p>pokud server používá tcp/ip, pak je jednoduchým způsobem telnet k portu serveru sql a uvidíte, zda se připojuje. ve výchozím nastavení je port 1433, takže by to mělo fungovat:</p><pre><code>telnet servername 1433 </code></pre><p>ve většině případů to bude pravděpodobně vhodné.</p><p>pokud používá jiný port nebo dynamické porty (společné s pojmenovanou instancí), musíte určit, na kterém portu je právě naslouchán. zkontrolujte správce konfigurace serveru sql a zkontrolujte, zda se jedná o konkrétní port nebo dynamické porty. pokud používáte dynamické porty, pak pokud nemáte na serveru více instancí, <code>netstat -abn</code> je pravděpodobně nejjednodušší způsob, jak najít to, co používá. v opačném případě kopejte protokolem událostí systému windows nebo protokolem chyb serveru sql pro zprávu označující port, který instance používá.</p><p>pokud sql server používá named pipes, pak i <em> věřím </em>, pokud máte přístup k sdíleným položkám na počítači, máte dostatečné síťové připojení. tento článek uvádí, že můžete jít dále a zkusit se připojit ke sdílené složce ipc $:</p><p> <a href="http://msdn.microsoft.com/en-us/library/aa275787%28v=sql.80%29.aspx">http://msdn.microsoft.com/en-us/library/aa275787%28v=sql.80%29.aspx</a> </p><pre><code>net use \\servername\ipc$ </code></pre><p>to je napsáno pro sql server 2000, ale já si nemyslím, že se tento aspekt hodně změnil, pokud vůbec.</p> Už jste se snažil změnit cílovou CPU `x86`místo `"Any CPU"`v pokročilých možnostech kompilátoru? Vím, že to řeší některé problémy s ostatními `OLEDB`poskytovateli vynucením použití 32-bitové verzi. <p>moje vps mi dala šanci experimentovat s novým serverovým softwarem. začal jsem s obvyklým nastavením apache2 + mod\_php, ale nyní mám nginx + php-fpm s proxy na některých starších serverech apache2 + mod\_php. také běžím (a ladím) apc, memcached a mysqld.</p><p>pokud se chystáte provozovat několik webů a výkon vašeho sdíleného hostitele je dobrý, zůstal bych na místě. pokud se chystáte uplatnit své právo na root, vps je skvělý ekonomický způsob, jak vyzkoušet nové věci.</p>