首页 / 浏览问题 / 云GIS / 问题详情
ajax post请求点数据集数据,数据量较大时,报500
106EXP 2020年10月14日

问题描述:classic开发,前端ajax 发post请求,sql查询数据集中所有点数据,当数据量较大时服务端500报错,数据量较小时没有问题,可以获取到返回数据,请问有什么解决办法?谢谢!

问题图片:

失败:

成功:

实现代码:

$.ajax({
		type: "post",
		url: "http://192.168.12.111:8090/iserver/services/data-DuoGuangPu/rest/data/featureResults.json?returnContent=true&fromIndex=0&toIndex=-1",
		data: JSON.stringify({'hasGeometry':false,'datasetNames':["data:栅格重采样点数据"],'getFeatureMode':"SQL",'queryParameter':{'fields':["SMX","SMY","VALUE"],'attributeFilter':"SmID > -1",'name':null,'joinItems':null,'linkItems':null,'ids':null,'orderBy':null,'groupBy':null}}),
		//data: JSON.stringify({'hasGeometry':false,'datasetNames':["data:栅格点数据"],'getFeatureMode':"SQL",'queryParameter':{'fields':["SMX","SMY","VALUE"],'attributeFilter':"SmID > -1",'name':null,'joinItems':null,'linkItems':null,'ids':null,'orderBy':null,'groupBy':null}}),
		dataType: "json",
		async: true, //异步执行
		success: function(data){
			console.log(data);
			
		},
		error :function(e){
			console.log(e);
			
		}
	})

1个回答

请问您说的数据量大的时候报500的错误具体数量是多少?关于classic的sql查询数据集您可以参考以下两个参考类https://iclient.supermap.io/web/libs/iclient8c/apidoc/files/SuperMap/REST/Query/QueryBySQLParameters-js.htmlhttps://iclient.supermap.io/web/libs/iclient8c/apidoc/files/SuperMap/REST/Query/QueryBySQLService-js.html

2,243EXP 2020年10月14日
两份点数据集,少的30万条左右,大的100万条左右;请求少的这份数据集能成功拿到返回值,请求大的数据集,报500错误。上面有报错截图。您提供的api我也有使用过,也同样会报错。现在实现方式是ajax post请求数据。
您尝试一下在iServer中使用数据服务进行SQL查询100万条数据这个,看能否正常查询出来,如果还是会报错的话您就查看一下您的多进程设置的进程数和JVM大小,查看服务器的资源占用情况。(您再尝试把多进程关闭了再使用iServer查询看一下是上面情况。)

在iserver里面用post查询数据集,只返回1000条数据,而且返回的是一个json url;

因为iServer查询时服务端默认返回查询结果条目的最大数量为1000,您先修改iServer安装目录\webapps\iserver\WEB-INF\iserver-services.xml文件中的maxFeatures的参数来修改查询出的结果条数。然后在进行上面的测试。

修改后没有1000条数据限制了,但是速度上也太慢了点,20万条数据加载了3min多。另外,这个如何解决我查询数据集会报500的错误,我iserver没有设置多线程,至于您说的JVM大小需要在哪里设置?

慢的话您开一下多进程,JVM设置的话您设置成2048m,然后重启iServer,重新查询看一下是不是还有问题。

...