Я предполагаю, что вы получите это OutOfMemoryException
на сервере Gremlin. По умолчанию сервер Gremlin настроен на -Xmx4096m
, что может быть недостаточным для размера загружаемого вами графика (особенно, если вы используете TinkerGraph, который является чистым графом в памяти). Вам просто нужно увеличить размер -Xmx
на вашем gremlin-server. sh файле , пока у вас не будет достаточно памяти для хранения вашего графика. Возможно, начните с удвоения до 8192m
, но, учитывая, что вы прошли только 20% своей нагрузки, я бы удивился, достаточно ли удвоения.
В качестве примечания, если вы выбрасываете значение verttmp.next()
(т.е. в вашем примере кода оно выглядит так же, как и вы), то было бы лучше сделать:
g.addV(mapprop.get(LABEL)).property(T.id, keyid).iterate()
Это будет значительно дешевле, так как вы не будете тратить время на возврат результатов, которые нужно было бы сериализовать и отправить по сети. Кроме того, если вы отправляете сценарии (т.е. где «запрос» - это String
), то я вижу, что вы не параметризуете свои запросы . Это убийца производительности, и я могу представить, что в результате требования к памяти будут намного выше, чем необходимо, что приведет к увеличению OutOfMemoryException
намного раньше, чем следовало бы. Либо измените свой код, чтобы использовать параметры, либо просто сделать запросы на основе байт-кода с удаленным обходом:
GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using("localhost",8182,"g"));
Я бы посоветовал вам использовать подход байт-кода, который избавляет вас от необходимости параметризации, и позвольте вам написать свой Gremlin как код а не встроенные строки.