[ 
https://issues.apache.org/jira/browse/TINKERPOP-1189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15543453#comment-15543453
 ] 

Robert Dale commented on TINKERPOP-1189:
----------------------------------------

Can we reopen this for further investigation?  I ran some tests on 
apache-tinkerpop-gremlin-server-3.2.2 and could demonstrate that authentication 
is a limiting factor

Results:
||Config||Seconds||
|ssl+auth|200|
|auth-only|144|
|ssl-only|67|
|none|10|

h2. Details
Using variations on conf/gremlin-server-rest-secure.yaml.  Server was restarted 
cleanly between each run with ./bin/gremlin-server.sh 
conf/gremlin-server-rest-secure.yaml

Added 10 vertices with g.addV(). Ran query g.V() 1000 times.

For each configuration and all else being equal:

h3. ssl+auth
{code}
authentication: {
  className: org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator,
  config: {
    credentialsDb: conf/tinkergraph-credentials.properties}}
ssl: {
  enabled: true}
{code}

h5. Setup
{noformat}
for i in `seq 1 10`; do curl -u stephen:password -k -X POST -d 
"{\"gremlin\":\"g.addV()\"}" "https://localhost:8182";; done
{noformat}

h5. Test
{noformat}
date; for i in `seq 1 1000`; do curl -u stephen:password -k -X POST -d 
"{\"gremlin\":\"g.V()\"}" "https://localhost:8182"; &>/dev/null; done; date
{noformat}

h3. auth-only
{code}
authentication: {
  className: org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator,
  config: {
    credentialsDb: conf/tinkergraph-credentials.properties}}
ssl: {
  enabled: false}
{code}

h5. Setup
{noformat}
for i in `seq 1 10`; do curl -u stephen:password  -X POST -d 
"{\"gremlin\":\"g.addV()\"}" "http://localhost:8182";; done
{noformat}

h5. Test
{noformat}
date; for i in `seq 1 1000`; do curl -u stephen:password -X POST -d 
"{\"gremlin\":\"g.V()\"}" "http://localhost:8182"; &>/dev/null; done; date
{noformat}

h3. ssl-only
{code}
#authentication: {
#  className: org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator,
#  config: {
#    credentialsDb: conf/tinkergraph-credentials.properties}}
ssl: {
  enabled: true}
{code}

h5. Setup
{noformat}
for i in `seq 1 10`; do curl -k -X POST -d "{\"gremlin\":\"g.addV()\"}" 
"https://localhost:8182";; done
{noformat}

h5. Test
{noformat}
date; for i in `seq 1 1000`; do curl -k -X POST -d "{\"gremlin\":\"g.V()\"}" 
"https://localhost:8182"; &>/dev/null; done; date
{noformat}

h3. none
{code}
#authentication: {
#  className: org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator,
#  config: {
#    credentialsDb: conf/tinkergraph-credentials.properties}}
ssl: {
  enabled: false}
{code}

h5. Setup
{noformat}
for i in `seq 1 10`; do curl -X POST -d "{\"gremlin\":\"g.addV()\"}" 
"http://localhost:8182";; done
{noformat}

h5. Test
{noformat}
date; for i in `seq 1 1000`; do curl -X POST -d "{\"gremlin\":\"g.V()\"}" 
"http://localhost:8182"; &>/dev/null; done; date
{noformat}


> SimpleAuthenticator over HttpChannelizer makes Gremlin Server pretty slow and 
> consumes more CPU
> -----------------------------------------------------------------------------------------------
>
>                 Key: TINKERPOP-1189
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1189
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: server
>    Affects Versions: 3.0.2-incubating
>         Environment: Gremlin Server 3.0.2 backended by Titan 1.0.0 and 
> Cassandra (separate instance), running in a server with 2 CPUs / 7.5 GB RAM 
> (Linux Debian 3.16.7)
>            Reporter: Gabriel Moreira
>            Assignee: stephen mallette
>            Priority: Minor
>
> I have setup Authorization in my Gremlin Server instances (v3.0.2), backended 
> by Titan v1.0.0 and Cassandra.
> I am testing SimpleAuthenticator, with the following snippet from my 
> gremlin-server.yaml:
> authentication: {
>   className: org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator,
>   config: {
>     credentialsDb: conf/tinkergraph-empty.properties,
>     credentialsDbLocation: data/credentials.kryo}}
> ssl: {
>   enabled: false}
> I am using the default serialization file of TinkerGraph credentials.kryo, 
> with only the default user stephen/password.
>  I am using Basic Auth in my requests to Gremlin Server, by passing the 
> header "Authorization" with the value "Basic c3RlcGhlbjpwYXNzd29yZA==".
> Authorization works as expected. Therefore, the Gremlin Server becomes pretty 
> slow! It takes 10x more time and consumes 5x more CPU (from 10% to 50%) to 
> handle the same simple traversal Http POST request (below) in batch, compared 
> to Gremlin Server with NO authorization!
> {
> "gremlin": "g.V().has('CONTENT','id', 'LinkPost:7330001').count()"
> }
> Is there a workaround to this?
> Ps. If there is a fix, could it be patched for version 3.0.2? I am limited to 
> this version because I use Titan 1.0.0.
> Thanks.
> Gabriel Moreira



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to