Aracılığıyla paylaş


Azure Cosmos DB öykünücüsü sorunlarını giderme

Azure Cosmos DB öykünücüsü, geliştirme için bulut hizmetine öykünen bir ortam sağlar. Öykünücüyü yüklerken veya kullanırken karşılaşabileceğiniz sorunları gidermeye yardımcı olması için bu makaledeki ipuçlarını kullanın.

Sorun giderme denetim listesi

Azure Cosmos DB öykünücüsü beklendiği gibi çalışmıyorsa izleyebileceğiniz yaygın sorun giderme adımlarının listesi aşağıdadır.

Verileri sıfırlama

Öykünücünün yeni bir sürümünü yüklediyseniz ve hatayla karşılaşıyorsanız verileri sıfırladığınızdan emin olun. Verileri sıfırlamak için sistem tepsisinden Azure Cosmos DB öykünücüsü bağlam menüsünü açın ve ardından Verileri Sıfırla'yı seçin.

Verileri sıfırlamak hataları düzeltmezse şunları yapabilirsiniz:

  • Öykünücüyü kaldırın.
  • Öykünücünün eski sürümlerini kaldırın (varsa).
  • %ProgramFiles%\Azure Cosmos DB Emulator Klasörü kaldırın.
  • Öykünücüyü yeniden yükleyin.

Alternatif olarak, verileri sıfırlama işe yaramazsa konuma gidin %LOCALAPPDATA%\CosmosDBEmulator ve klasörü silin.

Bozuk Windows performans sayaçlarını gözden geçirme

  • Azure Cosmos DB öykünücüsü yanıt vermeyi durdurursa, klasörden döküm dosyalarını %LOCALAPPDATA%\CrashDumps toplayın, dosyaları sıkıştırın ve ardından Azure portalında bir destek bileti açın.

  • Yanıt vermeyi durdurursa Microsoft.Azure.Cosmos.ComputeServiceStartupEntryPoint.exe , bu kilitlenme performans sayaçlarının bozuk olduğunu gösterebilir. Sayaç durumunu denetlemek için aşağıdaki komutu çalıştırın:

    lodctr /R
    

Bağlantı sorunlarını tanılama

  • Bağlantı sorunu yaşıyorsanız izleme dosyalarını toplayın, dosyaları sıkıştırın ve ardından Azure portalında bir destek bileti açın.

  • "Hizmet Kullanılamıyor" iletisi alırsanız öykünücü ağ yığınını başlatmıyor olabilir. Soruna ağ filtresi sürücüleri neden olabileceğinden Pulse Secure client veya Juniper Networks client'ın yüklü olup olmadığını denetleyin. Sorunu çözmek için diğer ağ filtresi sürücülerini kaldırmayı da deneyebilirsiniz. Alternatif olarak, öykünücü ağ iletişimini normal Winsock'a değiştirmek için kullanarak /DisableRIO öykünücüyü başlatın.

  • gibi "Forbidden", "message":"Request is being made with a forbidden encryption in transit protocol or cipher. Check account SSL/TLS minimum allowed protocol setting..."bir bağlantı hata iletisi alırsanız, bu hata iletisi işletim sistemindeki genel değişiklikleri (örneğin Insider Preview Derlemesi 20170) veya tarayıcı ayarlarında TLS 1.3'ün varsayılan protokol olarak etkinleştirilmesini sağlayan değişiklikleri gösterebilir. "Microsoft.Azure.Documents.DocumentClientException: aktarım protokolünde veya şifrelemede yasak şifreleme ile istek yapılıyor. Azure Cosmos DB öykünücüsnde istek çalıştırmak için SDK'sını kullanırsanız hesap SSL/TLS izin verilen en düşük protokol ayarını denetleyin" ifadesi oluşturulabilir. Azure Cosmos DB öykünücüsü yalnızca TLS 1.2 protokollerini desteklediğinden de bu hata oluşabilir. Önerilen geçici çözüm, TLS 1.2'yi varsayılan olarak ayarlamaktır.

    Örneğin:

    1. IIS Yöneticisi'nde Siteler>Varsayılan Web Siteleri'ne gidin.

    2. 8081 numaralı bağlantı noktası için Site Bağlamaları'nı bulun ve TLS 1.3'i devre dışı bırakmak için bunları düzenleyin. Ayarlar seçeneğini kullanarak web tarayıcısı ayarlarını da güncelleştirebilirsiniz.

      Not

      Öykünücü çalışırken bilgisayarınız uyku moduna geçerse veya işletim sistemi güncelleştirmeleri çalıştırırsa , "Hizmet şu anda kullanılamıyor" hata iletisini görebilirsiniz.

    3. Öykünücü verilerini sıfırlamak için Windows bildirim tepsisinde görünen simgeye sağ tıklayın ve ardından Verileri Sıfırla'yı seçin.

İzleme dosyalarını toplama

Hata ayıklama izlemelerini toplamak için, komut istemi penceresinde yönetici olarak aşağıdaki komutları çalıştırın:

  1. Öykünücünün yüklendiği yola gidin:

    cd /d "%ProgramFiles%\Azure Cosmos DB Emulator"
    
  2. Öykünücüyü kapatın ve programın kapalı olduğundan emin olmak için sistem tepsisini izleyin:

    Microsoft.Azure.Cosmos.Emulator.exe /shutdown
    

    Not

    İşlemin tamamlanması bir dakika sürebilir. Azure Cosmos DB öykünücüsü kullanıcı arabiriminde Çıkış'ı da seçebilirsiniz.

  3. Aşağıdaki komutu çalıştırarak günlüğe kaydetmeye başlayın:

    Microsoft.Azure.Cosmos.Emulator.exe /startwprtraces
    
  4. Öykünücüyü başlatın:

    Microsoft.Azure.Cosmos.Emulator.exe
    
  5. Sorunu yeniden oluşturun. Veri gezgini çalışmıyorsa, tarayıcının hatayı algılayabilmesi için yalnızca birkaç saniye beklemeniz gerekir.

  6. Günlüğe kaydetmeyi durdur:

    Microsoft.Azure.Cosmos.Emulator.exe /stopwprtraces
    
  7. %ProgramFiles%\Azure Cosmos DB Emulator Yola gidin ve docdbemulator_000001.etl dosyasını bulun.

  8. Azure portalında bir destek bileti açın ve sorunu yeniden oluşturmak için gereken tüm adımlarla birlikte .etl dosyasını ekleyin.

İstemci uygulamaları için sertifika yükleme

Bazen, dışarı aktarılan öykünücü sertifikasını almanız ve bir istemci uygulamasıyla kullanmanız gerekebilir. Tam işlem SDK'ya göre değişir.

TLS/SLL sertifikasını dışarı aktarma

Öykünücü uç noktasını Windows Sertifika Deposu ile tümleştirmeyen dillerden ve çalışma zamanı ortamlarından başarıyla kullanmak için öykünücü sertifikasını dışarı aktarın. Öykünücüyü ilk kez çalıştırdıktan sonra Windows Sertifika Yöneticisi'ni veya PowerShell'i kullanarak sertifikayı dışarı aktarabilirsiniz.

  1. Kolay adı DocumentDbEmulatorCertificate kullanarak sertifikayı alın ve sertifikayı adlı $certbir kabuk değişkeninde depolayın.

    $cert = Get-ChildItem Cert:\LocalMachine\My | where{$_.FriendlyName -eq 'DocumentDbEmulatorCertificate'}
    
  2. Sertifikayı giriş klasörünüzdeki geçici bir dosyaya aktarmak için Sertifikayı Dışarı Aktar'ı kullanın.

    $params = @{
        Cert = $cert
        Type = "CERT"
        FilePath = "$home/tmp-cert.cer"
        NoClobber = $true
    }
    Export-Certificate @params
    

    Not

    Windows'ta, giriş klasörünüz genellikle C:\Users\[username]\giriş sürücünüzün olduğunu varsayarsak şeklindedir C:.

  3. Sertifikayı Base-64 ile kodlanmış X.509 sertifika dosyasına dönüştürmek için certutil kullanın.

    certutil -encode $home/tmp-cert.cer $home/cosmosdbcert.cer
    
  4. Geçici dosyayı kaldırın.

    Remove-Item $home/tmp-cert.cer
    

Java uygulamaları için sertifikayı içeri aktarma

Java tabanlı istemci kullanan Java uygulamalarını veya MongoDB uygulamalarını çalıştırdığınızda, sertifikayı Java varsayılan sertifika deposuna yüklemek parametreleri geçirmekten -Djavax.net.ssl.trustStore=<keystore> -Djavax.net.ssl.trustStorePassword="<password>" daha kolaydır. Örneğin, eklenen Java Tanıtım uygulaması (https://localhost:8081/_explorer/index.html) varsayılan sertifika deposuna bağlıdır.

X.509 sertifikasını varsayılan Java sertifika deposuna aktarmak için TLS/SSL Sertifikaları Oluşturma, Dışarı Aktarma ve İçeri Aktarma başlığı altında verilen yönergeleri izleyin. Keytool çalıştırırken %JAVA_HOME% dizininde çalıştığınızı unutmayın. Sertifika sertifika deposuna aktarıldıktan sonra, SQL ve Azure Cosmos DB'nin MongoDB API'sine yönelik istemciler Azure Cosmos DB öykünücüsine bağlanabilir.

Alternatif olarak, sertifikayı içeri aktarmak için aşağıdaki bash betiği çalıştırabilirsiniz:

#!/bin/bash

# If the emulator was started with /AllowNetworkAccess, replace the following with the actual IP address of it:
EMULATOR_HOST=localhost
EMULATOR_PORT=8081
EMULATOR_CERT_PATH=/tmp/cosmos_emulator.cert
openssl s_client -connect ${EMULATOR_HOST}:${EMULATOR_PORT} </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > $EMULATOR_CERT_PATH
# Delete the cert if it already exists
sudo $JAVA_HOME/bin/keytool -cacerts -delete -alias cosmos_emulator
# Import the cert
sudo $JAVA_HOME/bin/keytool -cacerts -importcert -alias cosmos_emulator -file $EMULATOR_CERT_PATH

CosmosDBEmulatorCertificate TLS/SSL sertifikası yüklendikten sonra uygulamanızın yerel Azure Cosmos DB öykünücüsine bağlanabilmesi ve bunu kullanabilmesi gerekir.

Sorun yaşıyorsanız bkz . SSL/TLS bağlantılarında hata ayıklama. Çoğu durumda, sertifika %JAVA_HOME%/jre/lib/security/cacerts deposuna yüklenmeyebilir. Örneğin, Java'nın birden fazla yüklü sürümü varsa, uygulamanız güncelleştirdiğinizden farklı bir sertifika deposu kullanıyor olabilir.

Python uygulamaları için sertifikayı içeri aktarma

Öykünücüye Python uygulamalarından bağlandığınızda TLS doğrulaması devre dışı bırakılır. Varsayılan olarak, NoSQL için Azure Cosmos DB python SDK'sı yerel öykünücüye bağlandığında TLS/SSL sertifikasını kullanmayı denemez. Daha fazla bilgi için bkz . Python için NoSQL istemci kitaplığı için Azure Cosmos DB.

TLS doğrulamasını kullanmak istiyorsanız, yuva nesneleri için TLS/SSL sarmalayıcıdaki örnekleri izleyin.

Node.js uygulamaları için sertifikayı içeri aktarma

Node.js SDK'lardan öykünücüye bağlandığınızda TLS doğrulaması devre dışı bırakılır. Varsayılan olarak, NoSQL için API'nin Node.js SDK'sı (sürüm 1.10.1 veya üzeri), yerel öykünücüye bağlandığında TLS/SSL sertifikasını kullanmayı denemez.

TLS doğrulamasını kullanmak istiyorsanız Node.js belgelerindeki örnekleri izleyin.

Sertifikaları döndürme

Öykünücüyü bağımsız değişkeniyle /ResetDataPath açarak öykünücü sertifikalarının yeniden yenilenmesini zorlayabilirsiniz. Bu eylem öykünücü tarafından yerel olarak depolanan tüm verileri siler. Komut satırı bağımsız değişkenleri hakkında daha fazla bilgi için bkz . Windows öykünücüsü komut satırı bağımsız değişkenleri.

İpucu

Alternatif olarak, Windows sistem tepsisindeki Azure Cosmos DB öykünücüsünün bağlam menüsünden Verileri Sıfırla'yı seçin.

Sertifikaları Java sertifika deposuna yüklediyseniz veya başka bir yerde kullandıysanız, geçerli sertifikaları kullanarak yeniden içeri aktarmanız gerekir. Sertifikalar güncelleştirilene kadar uygulamanız yerel öykünücüye bağlanamaz.