أكثر

كيفية تحسين عرض مجموعات الطبقات في Geoserver

كيفية تحسين عرض مجموعات الطبقات في Geoserver


أنا أقوم بتشغيل GeoServer 2.8 على Ubuntu 14 كحرب في Tomcat 7. لدي آلة ذات 8 نواة بسعة 16 جيجابايت من ذاكرة الوصول العشوائي وسمحت بحجم كومة كبير يبلغ 4 جيجابايت. لدي JAI مثبتة وممكّنة. تم ضبط Meta tiling على 8x4 ولقد سمحت 3GB بالعرض حتى لا تكون الذاكرة مشكلة.

لدي مجموعة طبقات ذات أنماط تعتمد على المقياس. تنتقل الطبقات المختلفة من البيانات العالمية البسيطة إلى OSM. تكمن المشكلة في أنه على المستوى العالمي أو مستوى التكبير المنخفض ، يبدو أن Geoserver يحاول تحميل جميع البيانات ومعالجتها في جميع الطبقات على الرغم من عدم عرض معظمها. عندما تفكر في OSM - هذا الكثير من البيانات! لقد حاولت تخفيف الألم من خلال عرض بيانات التكبير المنخفض وبيانات التكبير / التصغير العالي (على سبيل المثال ، بالنسبة للطرق ، يفقد التكبير المنخفض الكثير من التفاصيل والطرق الثانوية). هذا لا يساعد وربما يضاعف من المشكلة. بالنظر إلى استهلاك الذاكرة ككل ، يوضح HTOP أن Java بالكاد تستخدم أيًا من كومة 4GB المسموح بها. لذا فإن رمي الذاكرة في GeoServer لا يساعد.

المفارقة هي أن العرض جيد في منتصف إلى مستويات التكبير / التصغير العالية ، على الرغم من أن بيانات OSM مرئية الآن ، ويفترض أن البيانات المطلوبة محدودة للغاية. جميع طبقات OSM الخاصة بي مفهرسة مكانيًا ومجمعة - لذلك لا توجد مشكلة هنا. ومع ذلك ، يجب أن يكون ذلك غير ذي صلة عند مستويات التكبير المنخفضة لأن طبقات OSM غير مرئية في الأنماط الخاصة بي.

في الوقت الحالي ، أعمل على حل المشكلة عن طريق تعيين أوقات العرض الخاصة بي لـ WMS إلى ساعة واحدة وزرع ذاكرة التخزين المؤقت (ببطء شديد - حتى أصل إلى مستويات التكبير / التصغير المتوسطة عندما يقل تحميل البيانات إلى كميات معقولة). هذا ليس حلاً رائعًا ، خاصةً إذا قمت بإجراء تغيير طفيف على مجموعة الطبقات الخاصة بي.

أريد مجموعة طبقة واحدة لإبقاء الأمور بسيطة في نهاية العميل. أفضل حل ، كما أراه ، هو تنفيذ "مفتاح" يعتمد على المقياس في تعريف مجموعة الطبقة ولكن هذا يتطلب إدخال GeoServer-Developer. ومع ذلك ، ما هي الأساليب العملية التي يقترحها الأشخاص لتحسين الأداء في هذه الأثناء (لقد قرأت بالفعلGeoServer على المنشطاتونفذت كل شيء ذي صلة هناك).

تعديل
كانت المشكلة بسبب نمط تالف تسبب في رسم حجم كبير من المضلعات الصغيرة جدًا على جميع المستويات - وهو ما يفسر النتائج المرصودة. إصلاح النمط وإصلاح المشكلة. ومع ذلك ، فقد سلط هذا الضوء على ما يبدو أنه تسرب خطير للذاكرة بعد الإخفاقات ، مما يتسبب بشكل تدريجي في جعل Geoserver أقل استجابة وإعادة تشغيل Tomcat فقط مع خطأ مقرف.killall -9 جافاإصلاحات المكالمات (فقط إعادة تشغيل Tomcat يترك التسريبات حيث سيؤكد التحقق من وجود تسريبات في مدير Tomcat).

في سجلاتي لدي بشكل دوري الخطأ التالي:

ERROR [org.geotools.map] - استدعاء MapContent dispose () لمنع تسرب الذاكرة

لا يتم الإبلاغ عن الخطأ مطلقًا منفردة ، ولكن دائمًا عدة مرات (إلى أرقام مزدوجة في بعض الأحيان) ويرتبط ببعض سجلات DEBUG على وجه الخصوص:

DEBUG [org.vfny.geoserver.responses.wms.map] - الإعداد إلى الشفافية 2015-08-08 08: 59: 48،448 تحذير [org.geotools.renderer.lite.gridcoverage2d] - لا يمكن تقليل هندسة الشبكة داخل الصالح حدود المنطقة: ReferencedEnvelope [-1.7976931348623157E308: 1.7976931348623157E308، -85.0: 85.0] هندسة الشبكة isGridGeometry2D [GridEnvelope2D [6365… 7293، 7345 ... 7818] ،

و:

DEBUG [org. ضد '/ الإنترنت / ** 2015/08/09 16: 39: 43123 DEBUG [org.geoserver.security.IncludeQueryStringAntPathRequestMatcher] - متطابق مسار: / الانترنت /، سلسلة استعلام مواقع المعلومات: س = 0bkVEjecmbChX7z8UByFaQCm3CLIUMoGOhTdEK9-vGhb41MvY3jdDsgkHKnbSgYXWRKtVX * * xG5ASH1XP FxePw مع / على شبكة الإنترنت / ** 2015-08-09 16: 39: 43،123 TRACE [org.geoserver.ows.OWSHandlerMapping] - لم يتم العثور على خرائط للمعالج لـ [/ web /] 2015-08-09 16: 39: 43،123 TRACE [org.geoserver. ows.OWSHandlerMapping] - لم يتم العثور على تعيين معالج لـ [/ web /] 2015-08-09 16: 39: 43،123 TRACE [org.geoserver.ows.OWSHandlerMapping] - لم يتم العثور على تعيين معالج لـ [/ web /] 2015-08- 09 16: 39: 43،123 TRACE [org.geoserver.ows.OWSHandlerMapping] - لم يتم العثور على تعيين معالج لـ [/ web /] 2015-08-09 16: 39: 43،126 DEBUG [org.geoserver] - مؤشر الترابط 1587 قفل في الوضع WRITE 2015-08-09 16: 39: 43،126 DEBUG [org.geoserver] - تم قفل الموضوع 1587 في الوضع WRITE 2015-08-09 16: 39: 45،927 خطأ [org.geotools.map] - استدعاء MapContent () للتخلص من منع تسرب الذاكرة

يمكن إغلاق هذا السؤال لأنه ابتعد الآن عن نظم المعلومات الجغرافية في البرمجة وهذا ليس المنتدى الخاص به - سأضع علامة على الإجابة الوحيدة على أنها الحل.


Ciao ، بعض الأشياء:

  • يبدو لي أنك تقوم في الغالب بتقديم بيانات المتجه ، وبالتالي فإن JAI لا تساعد جميعًا

  • إذا كنت تقدم في الغالب بيانات متجه مع قواعد تصميم معقدة ، آمل أن تستخدم نظام DBMS بدلاً من ملفات الأشكال خاصة بالنسبة لـ OSM. إذا لم يكن على المستوى العالمي ، فسيتعين على GeoServer تحميل كل ملفات الأشكال في الذاكرة ثم المرشحات لأن لدينا فقط فهارس مكانية على ملفات الأشكال

  • إذا كنت تستخدم نظام DBMS مكاني ، فيمكنك استخدام التصحيح المطول و SQL الذي تنتجه GeoServer حتى تتمكن من فهم ما إذا كنت بحاجة إلى إعادة هيكلة بياناتك و / أو جعل الأنماط أبسط

  • يتم تقييم قواعد الاستبعاد المستندة إلى المقياس في SLDs قبل تحميل البيانات بحيث لا يمثل ذلك مشكلة.

  • إذا كانت البيانات التي تريد استخدامها على نطاق عالمي محددة للغاية (أي أن الأشكال الهندسية ثقيلة التحميل ومفصلة للغاية) أقترح تبسيطها مقدمًا لتقليل وقت العرض (على الرغم من أنه يمكن تعديل بعض التبسيط إذا كنت تستخدم PGis مباشرة داخل تعريف الطبقة)

  • شيء أخير ، أنت تستخدم الإصدار 2.8 الذي لم يتم إصداره رسميًا (على الرغم من إغلاق إصداره) ، وبالتالي قد تواجه أخطاء :)

سيمون.


شاهد الفيديو: كورس QGIS 2. طرق إضافة الطبقات للبرنامج + وظيفة Browser