Anlayabilmemiz ve akış birimleriUnderstand and adjust Streaming Units

Akış birimleri (su), bir Stream Analytics işi çalıştırmak için ayrılan işlem kaynakları temsil eder.Streaming Units (SUs) represents the computing resources that are allocated to execute a Stream Analytics job. SU sayısı ne kadar büyük olursa işe ayrılan CPU ve bellek kaynakları o kadar fazla olur.The higher the number of SUs, the more CPU and memory resources are allocated for your job. Bu sorgu mantığına odaklanabilir kapasite sağlar ve, Stream Analytics'i çalıştırmak için donanım yönetmenize gerek zamanında iş özetleri.This capacity lets you focus on the query logic and abstracts the need to manage the hardware to run your Stream Analytics job in a timely manner.

Düşük gecikme süreli akış işlemeyi başarabilmek için, Azure Stream Analytics işleri tüm işlemi bellekte gerçekleştirir.To achieve low latency stream processing, Azure Stream Analytics jobs perform all processing in memory. Bellek yetersiz çalıştırırken, iş akışında başarısız olur.When running out of memory, the streaming job fails. Sonuç olarak, bir üretim iş için bir akış işin kaynak kullanımını izlemek ve 7/24 çalışan işleri tutmak için ayrılmış yeterli kaynak bulunduğundan emin olun önemlidir.As a result, for a production job, it’s important to monitor a streaming job’s resource usage, and make sure there is enough resource allocated to keep the jobs running 24/7.

% 0, % 100 aralıkları, SU % utilization ölçümünü iş yükünüz bellek kullanımını açıklar.The SU % utilization metric, which ranges from 0% to 100%, describes the memory consumption of your workload. Bu ölçüm, en küçük ayak izine sahip bir akış işi için %10 20 arasında genellikle olur.For a streaming job with minimal footprint, this metric is usually between 10% to 20%. SU kullanım yüzdesi düşüktür ve giriş olaylarını biriktirme listesine alınan, yükünüz büyük olasılıkla SUs sayısını artırmanız gerektiren daha fazla işlem kaynakları gerektirir.If SU% utilization is low and input events get backlogged, your workload likely requires more compute resources, which requires you to increase the number of SUs. % Zaman iniş hesap için 80 aşağıda SU ölçüm tutmak en iyisidir.It’s best to keep the SU metric below 80% to account for occasional spikes. Microsoft, Kaynak Tükenmesi önlemek için % 80 SU kullanım ölçüm uyarı ayarını önerir.Microsoft recommends setting an alert on 80% SU Utilization metric to prevent resource exhaustion. Daha fazla bilgi için Öğreticisi: Azure Stream Analytics işleri için uyarıları ayarlama.For more information, see Tutorial: Set up alerts for Azure Stream Analytics jobs.

Stream Analytics, akış birimleri (su) yapılandırmaConfigure Stream Analytics Streaming Units (SUs)

  1. Azure portalda oturum açın.Sign in to Azure portal

  2. Kaynak listesinde, ölçeklendirme ve sonra açmak istediğiniz Stream Analytics işini bulun.In the list of resources, find the Stream Analytics job that you want to scale and then open it. 

  3. İş sayfasının altında yapılandırma başlığı seçin ölçek.In the job page, under the Configure heading, select Scale. 

    Azure portal Stream Analytics işi yapılandırma

  4. İş için SUs ayarlamak için kaydırıcıyı kullanın.Use the slider to set the SUs for the job. SU ayarlarınıza sınırlı olduğuna dikkat edin.Notice that you are limited to specific SU settings. 

İş performansını izlemeMonitor job performance

Azure portalını kullanarak bir işin aktarım hızı izleyebilirsiniz:Using the Azure portal, you can track the throughput of a job:

Azure Stream Analytics işlerini izleme

İş yükü, beklenen aktarım hızıyla hesaplayın.Calculate the expected throughput of the workload. Aktarım hızı, beklenenden daha az ise, giriş bölümünü ayarlamak, sorguyu ayarlama ve işiniz için SUs ekleyin.If the throughput is less than expected, tune the input partition, tune the query, and add SUs to your job.

İş için kaç su gereklidir?How many SUs are required for a job?

Belirli bir proje için gerekli SUs sayısını seçme girişleri ve iş içinde tanımlanan bir sorgu için bölümlendirme yapılandırmasına bağlıdır.Choosing the number of required SUs for a particular job depends on the partition configuration for the inputs and the query that's defined within the job. Ölçek sayfası SUs doğru sayıda ayarlamanıza olanak sağlar.The Scale page allows you to set the right number of SUs. Gerekli olandan daha fazla SUs ayırmak için iyi bir uygulamadır.It is a best practice to allocate more SUs than needed. Stream Analytics işleme altyapısı, gecikme ve ek bellek ayırma, performans için iyileştirir.The Stream Analytics processing engine optimizes for latency and throughput at the cost of allocating additional memory.

Genel olarak, kullanmayan sorgular için 6 SUs başlatmak için en iyi yöntem olacaktır PARTITION BY.In general, the best practice is to start with 6 SUs for queries that don't use PARTITION BY. Ardından tatlı nokta temsili miktarda veri aktarmak ve SU % Utilization ölçümünü inceleyin sonra SUs sayısını değiştirerek bir deneme yanılma yöntemini kullanarak belirler.Then determine the sweet spot by using a trial and error method in which you modify the number of SUs after you pass representative amounts of data and examine the SU% Utilization metric. Stream Analytics işi tarafından kullanılan akış birimi sayısı, iş ve her bir adımın bölüm sayısı için tanımlanan sorgu, adım sayısı bağlıdır.The maximum number of streaming units that can be used by a Stream Analytics job depends on the number of steps in the query defined for the job and the number of partitions in each step. Sınırları hakkında daha fazla bilgi burada.You can learn more about the limits here.

SUs doğru sayıda seçme hakkında daha fazla bilgi için bu sayfaya bakın: Verimliliği artırmak için Azure Stream Analytics işlerini ölçeklendirmeFor more information about choosing the right number of SUs, see this page: Scale Azure Stream Analytics jobs to increase throughput

Not

Kaç su seçerek belirli bir işin girişler için bölümlendirme yapılandırmasına ve iş için tanımlanan sorguya bağlıdır için gereklidir.Choosing how many SUs are required for a particular job depends on the partition configuration for the inputs and on the query defined for the job. SUs kota bir iş için en fazla seçebilirsiniz.You can select up to your quota in SUs for a job. Varsayılan olarak, her Azure aboneliği, belirli bir bölgede bir kota analytics işleri için en fazla 500 sus'tan sahiptir.By default, each Azure subscription has a quota of up to 500 SUs for all the analytics jobs in a specific region. Aboneliğiniz bu kotayı aşan SUs artırmak için bağlantı Microsoft Support.To increase SUs for your subscriptions beyond this quota, contact Microsoft Support. İş başına SUs için geçerli değerler şunlardır: 1, 3, 6 ve 6'lık artışlarla.Valid values for SUs per job are 1, 3, 6, and up in increments of 6.

SU kullanım yüzdesi artırmak faktörleriFactors that increase SU% utilization 

Zamana bağlı sorgu (zaman tabanlı), durum bilgisi olan işleçleri Stream Analytics tarafından sağlanan dizi temel öğeleridir.Temporal (time-oriented) query elements are the core set of stateful operators provided by Stream Analytics. Stream Analytics, kullanıcı adına bu işlemleri dahili olarak durumunu bellek tüketimi, dayanıklılık ve durumu kurtarma için denetim noktası hizmeti yükseltmeleri sırasında yöneterek yönetir.Stream Analytics manages the state of these operations internally on user’s behalf, by managing memory consumption, checkpointing for resiliency, and state recovery during service upgrades. Stream Analytics, tamamen durumları yöneten olsa da, bir dizi kullanıcılar göz önünde bulundurmanız gereken en iyi yöntem önerileri vardır.Even though Stream Analytics fully manages the states, there are a number of best practice recommendations that users should consider.

Not bile, sürekli olarak giriş olayları alamayan, yüksek SU kullanım yüzdesi karmaşık sorgu mantığı ile bir iş olabilir.Note that a job with complex query logic could have high SU% utilization even when it is not continuously receiving input events. Bu, sonra giriş ve çıkış olayları ani bir artış oluşabilir.This can happen after a sudden spike in input and output events. İş sorgusu karmaşıksa, bellekte durumunu korumak üzere devam edebilir.The job might continue to maintain state in memory if the query is complex.

SU kullanım yüzdesi aniden beklenen düzeylerine geri dönmeyi önce kısa bir süre için 0 olarak düşebilir.SU% utilization may suddenly drop to 0 for a short period before coming back to expected levels. Bu, geçici hatalar veya sistem tarafından başlatılan yükseltme işlemleri nedeniyle gerçekleşir.This happens due to transient errors or system initiated upgrades. Bir işi SU kullanım yüzdesi azaltabilir, bu sorgunuzu değilse değil için akış birimi sayısını artırabilir tam olarak paralel.Increasing number of streaming units for a job might not reduce SU% Utilization if your query is not fully parallel.

Durum bilgisi olan sorgu mantığının zamana bağlı öğeleriStateful query logic in temporal elements

Azure Stream Analytics işi benzersiz yeteneğinin, pencereli toplamlar, zamana bağlı birleştirmeler ve geçici analiz işlevleri gibi durum bilgisi olan işlem gerçekleştirmektir.One of the unique capability of Azure Stream Analytics job is to perform stateful processing, such as windowed aggregates, temporal joins, and temporal analytic functions. Bu işleçlerden her biri, durum bilgilerini tutar.Each of these operators keeps state information. Bu sorgu öğeleri için maksimum pencere boyutunu yedi gündür. The maximum window size for these query elements is seven days.

Geçici pencere kavramı çeşitli Stream Analytics sorgu öğelerin görünür:The temporal window concept appears in several Stream Analytics query elements:

  1. Pencereli toplamlar: Grup tarafından atlaması ve windows kayan atlayan,Windowed aggregates: GROUP BY of Tumbling, Hopping, and Sliding windows

  2. Zamana bağlı birleşimler: DATEDIFF işlevi ile birleştirmeTemporal joins: JOIN with DATEDIFF function

  3. Zamana bağlı analitik İşlevler: ISFİRST, LAST ve GECİKME süresi sınırıTemporal analytic functions: ISFIRST, LAST, and LAG with LIMIT DURATION

Kullanılan bellek aşağıdaki faktörleri etkilemek (akış birimi ölçüm parçası) Stream Analytics işleri tarafından:The following factors influence the memory used (part of streaming units metric) by Stream Analytics jobs:

Pencereli toplamlarWindowed aggregates

Kullanılan bellek (durum boyutu) bir pencereli toplama için her zaman penceresi boyutuna orantılı değil.The memory consumed (state size) for a windowed aggregate is not always directly proportional to the window size. Bunun yerine, kullanılan bellek veri ya da grubu her zaman penceresinde kardinalite orantılıdır.Instead, the memory consumed is proportional to the cardinality of the data, or the number of groups in each time window.

Örneğin, sayı ile ilişkili aşağıdaki sorguda clusterid nicelik sorgu.For example, in the following query, the number associated with clusterid is the cardinality of the query. 

SELECT count(*)
FROM input 
GROUP BY  clusterid, tumblingwindow (minutes, 5)

Önceki sorguda yüksek kardinalite kaynaklanan sorunları azaltmak için olayları olay hub'ına tarafından bölümlenmiş gönderebilirsiniz clusteridve her giriş bölümünü üzerinden ayrı olarak işlemek sistem sağlayarak sorgu genişletme bölüm TARAFINDAN aşağıdaki örnekte gösterildiği gibi:In order to mitigate any issues caused by high cardinality in the previous query, you can send events to Event Hub partitioned by clusterid, and scale out the query by allowing the system to process each input partition separately using PARTITION BY as shown in the example below:

SELECT count(*) 
FROM input PARTITION BY PartitionId
GROUP BY PartitionId, clusterid, tumblingwindow (minutes, 5)

Sorgu bölümlere ayrıldıktan sonra birden çok düğüme dağıtılır.Once the query is partitioned out, it is spread out over multiple nodes. Sonuç olarak, sayısını clusterid her düğüme gelen değerleri azaltıldı böylece grubunun kardinalite azaltma işleciyle.As a result, the number of clusterid values coming into each node is reduced thereby reducing the cardinality of the group by operator. 

Olay hub'ı bölümleri, bir azaltma adımı ihtiyacını önlemek için gruplandırma anahtara göre bölümlendirilmelidir.Event Hub partitions should be partitioned by the grouping key to avoid the need for a reduce step. Daha fazla bilgi için Event Hubs'a genel bakış.For more information, see Event Hubs overview. 

Zamana bağlı birleştirmelerTemporal joins

Kullanılan bellek (durum boyutu) zamana bağlı bir birleşimin giriş olayı oranı hareket alanına odası boyutu tarafından birden çok kez birleştirme işleminin zamana bağlı hareket alanına odada bir olay sayısı orantılıdır.The memory consumed (state size) of a temporal join is proportional to the number of events in the temporal wiggle room of the join, which is event input rate multiply by the wiggle room size. Diğer bir deyişle, DATEDIFF zaman aralığına göre ortalama olay oranı çarpılan katılımlar tarafından kullanılan bellek orantılıdır.In other words, the memory consumed by joins is proportional to the DateDiff time range multiplied by average event rate.

Birleştirme için eşleşmeyen olay sayısı, sorgu için bellek kullanımını etkiler.The number of unmatched events in the join affect the memory utilization for the query. Aşağıdaki sorgu, tıklama oluşturan reklam görüntüleme sayısını bulmayı amaçlamaktadır:The following query is looking to find the ad impressions that generate clicks:

SELECT clicks.id
FROM clicks 
INNER JOIN impressions ON impressions.id = clicks.id AND DATEDIFF(hour, impressions, clicks) between 0 AND 10.

Bu örnekte, birçok gösterilir ve birkaç insanın bunlara tıklaması ve tüm olayların zaman penceresinde tutmak için gerekli olan mümkündür.In this example, it is possible that lots of ads are shown and few people click on it and it is required to keep all the events in the time window. Tüketilen bellek miktarı pencere boyutu ve olay hızıyla doğru orantılıdır.Memory consumed is proportional to the window size and event rate. 

Bu sorunu düzeltmek için olayları olay sistem vererek join anahtarlar (Bu durumda kimliği) ve sorgu genişletme bölümlenmiş kullanılarak ayrı giriş her bölümün Hub'ına gönderme PARTITION BY gösterildiği gibi:To remediate this, send events to Event Hub partitioned by the join keys (id in this case), and scale out the query by allowing the system to process each input partition separately using PARTITION BY as shown:

SELECT clicks.id
FROM clicks PARTITION BY PartitionId
INNER JOIN impressions PARTITION BY PartitionId 
ON impression.PartitionId = clicks.PartitionId AND impressions.id = clicks.id AND DATEDIFF(hour, impressions, clicks) between 0 AND 10 

Sorgu bölümlere ayrıldıktan sonra birden çok düğüme dağıtılır.Once the query is partitioned out, it is spread out over multiple nodes. Sonuç olarak, her düğüme gelen olay sayısı azalmasına yol açar birleştirme penceresinde durum boyutu.As a result the number of events coming into each node is reduced thereby reducing the size of the state kept in the join window. 

Zamana bağlı bir analiz işlevleriTemporal analytic functions

Kullanılan bellek (durum boyutu) bir zamana bağlı analitik işlevinin birden çok kez süresine olay hızıyla doğru orantılıdır.The memory consumed (state size) of a temporal analytic function is proportional to the event rate multiply by the duration. Analitik işlevler tarafından tüketilen bellek miktarı pencere boyutu için doğru orantılı değil, ancak bunun yerine her zaman penceresi sayısına bölümü. The memory consumed by analytic functions is not proportional to the window size, but rather partition count in each time window.

Zamana bağlı katılmak için düzeltme benzerdir.The remediation is similar to temporal join. Sorgu kullanarak ölçeği genişletin PARTITION BY.You can scale out the query using PARTITION BY. 

Sıralama dışına çıkan arabelleğiOut of order buffer 

Kullanıcı yapılandırma bölmesi sıralama olayda sıralamaya arabellek boyutu yapılandırabilirsiniz.User can configure the out of order buffer size in the Event Ordering configuration pane. Arabellek Girişleri penceresinin süresi boyunca tutun ve yeniden sıralamak için kullanılır.The buffer is used to hold inputs for the duration of the window, and reorder them. Arabellek boyutu birden çok kez sıralamaya pencere boyutuna göre olay giriş oranı orantılıdır.The size of the buffer is proportional to the event input rate multiply by the out of order window size. Varsayılan pencere boyutu 0'dır.The default window size is 0. 

Sıralama dışına çıkan arabellek taşması sorunu düzeltmek için ölçeklendirme sorgu kullanarak PARTITION BY.To remediate overflow of the out of order buffer, scale out query using PARTITION BY. Sorgu bölümlere ayrıldıktan sonra birden çok düğüme dağıtılır.Once the query is partitioned out, it is spread out over multiple nodes. Sonuç olarak, her düğüme gelen olay sayısını azalmasına yol açar, her yeniden sıralama arabelleği içinde olay sayısı.As a result, the number of events coming into each node is reduced thereby reducing the number of events in each reorder buffer. 

Giriş bölüm sayısıInput partition count 

Bir işin giriş giriş her bölüm, bir arabellek sahiptir.Each input partition of a job input has a buffer. İş giriş bölüm sayısı daha büyük, daha fazla kaynak tüketir.The larger number of input partitions, the more resource the job consumes. Her akış birimi yaklaşık 1 MB/sn giriş, Azure Stream Analytics işleyebilir.For each streaming unit, Azure Stream Analytics can process roughly 1 MB/s of input. Bu nedenle, Stream Analytics, akış birimleri, olay Hub'ındaki bölüm sayısı ile sayısını eşleştirerek iyileştirebilirsiniz.Therefore, you can optimize by matching the number of Stream Analytics streaming units with the number of partitions in your Event Hub.

Genellikle, bir akış birimi ile yapılandırılmış bir işi (olay hub'ı için en düşük olan) bir Event Hub ile iki bölüm için yeterli olur.Typically, a job configured with one streaming unit is sufficient for an Event Hub with two partitions (which is the minimum for Event Hub). Olay hub'ı daha fazla bölüm varsa, Stream Analytics işinizi daha fazla kaynak tüketir, ancak mutlaka olay hub'ı tarafından sağlanan ek aktarım hızı kullanır.If the Event Hub has more partitions, your Stream Analytics job consumes more resources, but not necessarily uses the extra throughput provided by Event Hub.

Akış birimleri 6 ile bir proje için olay hub'ı 4 veya 8 bölümlerden gerekebilir.For a job with 6 streaming units, you may need 4 or 8 partitions from the Event Hub. Ancak, aşırı kaynak kullanımının neden olduğundan çok fazla gereksiz bölümler kaçının.However, avoid too many unnecessary partitions since that causes excessive resource usage. Örneğin, bir olay hub'ı 16 bölümleri veya 1 akış birimi olan bir Stream Analytics işinde daha büyük.For example, an Event Hub with 16 partitions or larger in a Stream Analytics job that has 1 streaming unit.

Başvuru verileriReference data 

Başvuru verilerinde ASA için hızlı arama belleğe yüklenir.Reference data in ASA are loaded into memory for fast lookup. Birden çok kez aynı başvuru verileriyle birleştirme bile bellekte geçerli bir uygulama ile her başvuru verileriyle birleştirme işlemi başvuru verilerinin bir kopyasını tutar.With the current implementation, each join operation with reference data keeps a copy of the reference data in memory, even if you join with the same reference data multiple times. Sorgular için PARTITION BY, her bölüm, bölümlerin tam olarak ayrılmış şekilde, başvuru verilerini bir kopyasına sahip olur.For queries with PARTITION BY, each partition has a copy of the reference data, so the partitions are fully decoupled. Çarpan etkisi ile bellek kullanımı hızla birden çok kez ile birden çok bölüme başvuru verileriyle birleştirme, çok yüksek alabilirsiniz.With the multiplier effect, memory usage can quickly get very high if you join with reference data multiple times with multiple partitions.  

UDF işlevleri kullanımıUse of UDF functions

UDF işlevi eklediğinizde, Azure Stream Analytics JavaScript çalışma zamanı belleğine yükler.When you add a UDF function, Azure Stream Analytics loads the JavaScript runtime into memory. Bu, SU % etkiler.This will affect the SU%.

Sonraki adımlarNext steps