Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 14467|Vastaus: 1

Kafka Windows -järjestelmä jumiutuu jonkin ajan käytön jälkeen

[Kopioi linkki]
Julkaistu 12.7.2021 10.57.01 | | | |
1: Tausta

Käytin kafkaa aiemmin Linux-ympäristössä, eikä kafkassa itsessään ollut mitään ongelmaa. Kuitenkin projekti, jota parhaillaan teen, täytyy olla yhteensopiva Windowsin ja Linuxin kanssa, ja kun käytän Kafkaa Windows-ympäristössä, huomasin, että Kafka itsessään ei ole yhtä yhteensopiva Windowsin kanssa kuin Linux.

2: Ongelma

Kun testasin Kafkaa Windows-alla, huomasin, että Kafkassa oli virhe käynnistyksen jälkeen tietyn ajan:

Toinen ohjelma käyttää tiedostoa, mutta prosessi ei pääse siihen käsiksi.
Seuraavat ratkaisut eivät täysin ratkaise ongelmaa eivätkä ole suositeltavia

Windows Kafka ERROR Ei onnistunut puhdistamaan lokia __consumer_offsets
https://www.itsvse.com/thread-9980-1-1.html




[2021-07-06 09:06:10,800] VIRHE Epäonnistui puhdistamaan lokia __consumer_offsets-42:lle dir:\tmp\kafka-logs IOExceptionin (kafka.server.LogDirFailureChannel) vuoksi
java.nio.file.FileSystemException: C:\tmp\kafka-logs\__consumer_offsets-42\00000000000000000000.timeindex.cleaned ->
C:\tmp\kafka-logs\__consumer_offsets-42\00000000000000000000.timeindex.swap: 另一个程序正在使用此文件,进程无法访问。

        osoitteessa sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
        osoitteessa sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
        osoitteessa sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:387)
        osoitteessa sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)
        osoitteessa java.nio.file.Files.move(Files.java:1395)
        osoitteessa org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:904)
        osoitteessa kafka.log.AbstractIndex.renameTo(AbstractIndex.scala:210)
        osoitteessa kafka.log.LazyIndex$IndexValue.renameTo(LazyIndex.scala:155)
        osoitteessa kafka.log.LazyIndex.$anonfun$renameTo$1(LazyIndex.scala:79)
        osoitteessa kafka.log.LazyIndex.renameTo(LazyIndex.scala:79)
        osoitteessa kafka.log.LogSegment.changeFileSuffixes(LogSegment.scala:496)
        osoitteessa kafka.log.Log.$anonfun$replaceSegments$4(Log.scala:2402)
        osoitteessa kafka.log.Log.$anonfun$replaceSegments$4$adapted(Log.scala:2402)
        osoitteessa scala.collection.immutable.List.foreach(List.scala:333)
        osoitteessa kafka.log.Log.replaceSegments(Log.scala:2402)
        osoitteessa kafka.log.Cleaner.cleanSegments(LogCleaner.scala:613)
        osoitteessa kafka.log.Cleaner.$anonfun$doClean$6(LogCleaner.scala:538)
        at kafka.log.Cleaner.$anonfun$doClean$6$adapted(LogCleaner.scala:537)
        osoitteessa scala.collection.immutable.List.foreach(List.scala:333)
        osoitteessa kafka.log.Cleaner.doClean(LogCleaner.scala:537)
        osoitteessa kafka.log.Cleaner.clean(LogCleaner.scala:511)
        osoitteessa kafka.log.LogCleaner$CleanerThread.cleanLog(LogCleaner.scala:380)
        osoitteessa kafka.log.LogCleaner$CleanerThread.cleanFilthiestLog(LogCleaner.scala:352)
        osoitteessa kafka.log.LogCleaner$CleanerThread.tryCleanFilthiestLog(LogCleaner.scala:332)
        osoitteessa kafka.log.LogCleaner$CleanerThread.doWork(LogCleaner.scala:321)
        osoitteessa kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:96)
        Suljettu: java.nio.file.FileSystemException: C:\tmp\kafka-logs\__consumer_offsets-42\000000000000000000000000000000.timeindex.cleaned -> C:\tmp\kafka-logs\__consumer_offsets-42\ 000000000000000000000000000.timeindex.swap: Toinen ohjelma käyttää tätä tiedostoa, eikä prosessi ole käytettävissä.

                osoitteessa sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
                osoitteessa sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
                osoitteessa sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:301)
                osoitteessa sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)
                osoitteessa java.nio.file.Files.move(Files.java:1395)
                osoitteessa org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:901)
                ... 20 lisää

3: Syy

Kafka-lokin puhdistuspolitiikka käynnistää, että Windows-ympäristössä tiedostoa ei saa nimetä uudelleen, kun auki pitää puhdistaa (mikä on mahdollista Linux-ympäristössä), mikä aiheuttaa Kafkan kaatumisen.

Yleisin ratkaisu internetissä on "tyhjentää kafkan lokitiedostot ja käynnistää kafka uudelleen", mikä on selvästi epärealistista tuotantoympäristössä. Aluksi keksin seuraavat kaksi ratkaisua tilanteeseen:

Ratkaisu 1: Muokkaa lokin puhdistuskäytäntöä niin, että lokin puhdistusaika muuttuu äärettömiksi (-1), jotta kafka-datalokit säilytetään pysyvästi
Haitat: (1) Levyn tila kasvaa jatkuvasti
Vaihtoehto 2: Rakenna virtuaalikone Windowsilla (docker on sama, mutta hankalampi), ja sitten Kafka otetaan käyttöön virtuaalikoneessa
Haitat: (1) O&M-henkilöstön tulee osata Linux-O&M-osaamista (2) Lisätä muistinkulutusta

Ilmiselvästi molempien vaihtoehtojen puutteet olivat minulle sietämättömiä, joten käänsin huomioni Kafka-yhteisöön avun toivossa.

Klikkaa tästä keskusteluun jumalten palvonnasta:Hyperlinkin kirjautuminen on näkyvissä.

Ymmärretään, että Kafkan ongelma ikkunan alla ei ole niin helppo kuin on kuviteltu.Virallista ratkaisua ei ole toistaiseksi。 Toisin sanoen (Älä käytä kafkaa ikkunan alla! )

Ratkaisu 3: Mutta siitä huolimatta tarve käyttää kafkaa ikkunan alla on yhä olemassa, joten monet jumalat kiinnittävät huomiota ja ehdottavat ratkaisuja. Yksi suurista jumalista on kehittänyt kafka-lähdekoodin tähän ongelmaan. Testauksen jälkeen hänen ratkaisunsa ratkaisi ongelman ikkunan alla, jolloin kafka saataisiin ikkunan alle. Kuitenkin tämän ratkaisun osalta Kafkan avustaja sanoi, ettei se välttämättä ole turvallinen (eli päivitystä ei voi integroida viralliseen versioon).

4: Ratkaise (lopussa on latauslinkki käännetystä kafka-paketista)
Vaikka Kafkan viranomaiset sanovat, ettei paikka ole kovin turvallinen, viranomainen ei ole toistaiseksi tehnyt mitään. Ja kysyntää on kyllä, joten jonkin harkinnan jälkeen aion silti käyttää vaihtoehto 3:n menetelmää ratkaistakseni ongelman lopullisesti, joten lisäämme päivityksen ja käännämme kafkan uudelleen.

4.1: Kafka-päivitysversion lataus

Lataa tämän tekijän kafka-päivitysversio

Hyperlinkin kirjautuminen on näkyvissä.

4.2: Käännä Kafka-päivitysversio
Koska kafka-kääntäminen tehdään gradlen kautta, sinun täytyy ensin konfiguroida gradle

Gradlen konfigurointia varten voit katsoa tästä artikkelista (uudelleenpainettu, rikkomus poistetaan) Gradlen asennus ja konfigurointi Windowsissa:Hyperlinkin kirjautuminen on näkyvissä.

Lisätietoja Kafkan kääntämisestä löydät githubista------ Kuinka kääntää Kafka Gradlella:Hyperlinkin kirjautuminen on näkyvissä.

Kääntämisen jälkeen voit hankkia Kafka-paketin, jota voi käyttää Windowsissa.

Kopioi-liitä -käsitteen mukaisesti (lähdekoodin kääntäminen vie edelleen melko paljon aikaa), tässä on latauslinkki kafka-paketille, jonka käännin, ja voit ladata sen ja käyttää sitä suoraan.

kafka_2.12-2.3.0_window Latausosoite anti-downtime-versiolle:

Hyperlinkin kirjautuminen on näkyvissä.

Alkuperäinen linkki:Hyperlinkin kirjautuminen on näkyvissä.







Edellinen:MySQL kysyy tietokantataulun annotaatioita
Seuraava:SQL Server -yhteenveto osioiduista tauluista
Julkaistu 12.7.2021 21.16.33 |
Foorumipomo, joka ei ole vielä pelannut, on niin syvästi palvottu
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com