Soru Semaforlar nelerdir ve nasıl oluşurlar?


Kısa bir süre önce Apache'imin çökmesine ve yeniden başlatılamayacağına dair sorun yaşamaya başladım. Daha sonra hosting şirketi bana 'semaphores' ile ilgili olduğunu söyledi ve bana bu sorunu çözdüler.

/usr/bin/ipcrm sem $(/usr/bin/ipcs -s | grep www-data | awk '{print$2}')

Şimdi bu, benim problemimi çözen bir yürütme emrini vermek güzel ama yine de bunun neyle ilgili olduğuna dair hiçbir fikrim yok.

Semaforlar nelerdir, heck kimdir onları, nerede olduklarını ve apache'mi nasıl kıstırırlar?

Bazı genel açıklamalar için çok memnun olurum!


8
2018-05-07 05:27


Menşei




Cevaplar:


Diğerleri gibi semaforlar IPC (interprocess communication yapılar) olduğunu söylediler. Tüm IPC'ler gibi semaforlar, farklı süreçlerin birbirleriyle iletişim kurmasına izin vermek için kullanılır.

Bunlar, sempost (3), semwait (3), semget (2) ve semop (2) gibi özel sistem çağrıları kullanılarak oluşturulan, erişilen ve yok edilen sayaçlardır. Kısa bir açıklama için bir linux sistemindeki sem_overview (7) konusuna bakın.

Burada iletişimin tanımı oldukça ilkeldir. Semaforlar için "İletişim", yukarıda bahsedilen sistem / kütüphane çağrıları aracılığıyla bir sayacın okunması, artırılması veya azaltılması anlamına gelir.

Semaforlar hakkındaki özel bir şey, şu andaki tek bir işlemin, bir seferde bir işlem gerçekleştirebilmeleri ve semafor işlemleri atomik garantiliDiğer bir deyişle, bir semafor operasyonu gerçekleştiren bir süreci değiştirmeyeceğinden, bir semafor üzerinde bir yarış koşuluna giremezsiniz.

Diğer özel olan ise, birden çok işlemin bunlara erişmesine izin veren paylaşılan bellekte oluşturulmuş olmasıdır.

Nasıl tezahür / yaratıldıkları, programların onları semget (2) kullanarak oluşturduklarıdır. Örneğin. apache çalıştığında sempahores oluşturur.

ipcs -l, sistemin ipc kaynakları hakkında size bilgi verecektir.

Sistem semafor ve ipc ile ilgili bazı limitleri sysctls ile değiştirebilirsiniz. Deneyin sysctl kernel.sem Sempahore ile ilgili ayarları sysctl üzerinden görüntülemek. Eğer herhangi bir sysctl değişikliklerine devam etmek istiyorsanız /etc/sysctl.conf.


7
2018-05-10 13:30





Semaforlar bir süreçler arası iletişimdir (ipcrm'de ipc). İşletim sistemi tarafından sağlanır ve Apache geliştiricileri bunları farklı Apache süreçleri arasında iletişim için kullanır. Apache'nin çökmesine neden olma ihtimali yoktur, ancak yeni Apache örneklerinin başlamasını engelleyerek çökme durumunda serbest bırakılmazlar.

Wikipedia: Semafor (programlama)


4
2018-05-07 05:49



Konu üzerinde StackOverflow üzerinde bir konu da var: stackoverflow.com/questions/34519/what-is-a-semaphore - James Sneeringer
URL’nizde bir hata var .. URL eksiktir.) Serverfault yazılımında bir hata var gibi görünüyor ... - tegbains
homurdanma  URL'yi önizlemede doğru alır ve kaydeddiğimde) düşer. - pgs
Şimdiye kadar teşekkürler. Ama onlar ne, nasıl tezahür ediyorlar? Onlar kütükler, kütük kayıtları mı? Hafızayla ne ilgisi var? Kötü php programlamadan kaynaklanabilirler (hosting firmamın bana söylediği gibi)? - markus
Paylaşılan hafıza ve çekirdek yapılarıdır. PHP thread-safe değildir, bu yüzden Apache2'nin prefork multi-processing modülünü kullanmalısınız. - pgs